1. 给出下述程序的执行结果
#include <stdio.h>
#define ADD( X ,Y ) X*Y
main( )
{
int a = 3 , b = 6 ;
printf( "%d\n" ,ADD( a++ , b++ ) ) ;
}
2. 给出下述程序的执行结果
void fun( )
{
static int a[3]={0, 1, 2};
int i=0 ;
while (i<3 )
{
a[ i ] += a[ i ] +1;
i++;
}
for( i = 0; i<3; i ++)
printf("%d ", a[ i ] );
}
main( )
{
fun( );
fun( );
}
3. 给出下述程序的执行结果
#include <stdio.h>
int f(int b);
main()
{
int a=3,i;
for(i=0;i<3;i++)
printf("%d,",f(a++));
}
int f(int b)
{
int a=0;
static int c=3;
a++;
b++;
c++;
return (a+b+c);
}
4. 给出下述程序的执行结果
#include <stdio.h>
int x=2;
void increment();
main()
{
int x=8;
increment();
x++;
increment();
x++;
increment();
}
void increment()
{
int x=0;
x++;
printf("%d,",x);
}
5. 给出下述程序的执行结果
#include <stdio.h>
long fib(int x)
{
switch(x)
{
case 0: return 0;
case 1:
case 2: return 1;
}
return (fib(x-1)+fib(x-2));
}
main()
{
int x=6;
printf("%d\n",fib(x));
}
6. 给出下述程序的执行结果
#include <stdio.h>
int x1=30,x2=40;
void swap(int x,int y);
void main()
{
int x3=10,x4=20;
swap(x3,x4);
swap(x2,x1);
printf("%d,%d,%d,%d\n",x3,x4,x1,x2);
}
void swap(int x,int y)
{
x1=x;
x=y;
y=x1;
}
7. 给出下述程序的执行结果
#include <stdio.h>
int a=4,b=5;
int max(int a,int b)
{
int c;
c=a>b?a:b;
return c;
}
void main()
{
int a=6;
printf("%d\n",max(a,b));
}
8. 给出下述程序的执行结果
#include <stdio.h>
#define ADD(x) x+x
void main()
{
int m=1,n=2,k=3;
int sum=ADD(m+n)*k;
printf("%d",sum);
}
9. 给出下述程序的执行结果
#include<stdio.h>
void num()
{
extern int x,y;
int a=15,b=10;
x=a-b;
y=a+b;
}
int x,y;
main()
{
int a=7,b=5;
x=a+b;
y=a-b;
num();
printf("%d,%d\n",x,y);
}
10. 给出下述程序的执行结果
#include<stdio.h>
int fun2(int a,int b)
{
int c;
c=a*b%3;
return c;
}
int fun1(int a,int b)
{
int c;
a+=a;
b+=b;
c=fun2(a,b);
return c*c;
}
main()
{
int x=11,y=19;
printf("%d\n", fun1(x,y));
}
11. 写出下述程序的输出结果
#include <stdio.h>
int x = 1;
int f1()
{
return (++x);
}
int f2(int x)
{
static int y = 3;
x += y++;
return (x++);
}
int f3(int x)
{
return (--x);
}
void main()
{
int x,y,z;
x = y = z = 10;
printf("%d,",f1());
printf("%d,",f2(x));
printf("%d,",f2(x));
x = y++ + --z;
printf("%d\n",f3(x));
}
12. 写出下述程序的输出结果
#include <stdio.h>
int func(int n)
{
if(n<=1)
return 1;
else
return (2+n*func(n-1));
}
void main()
{
int x = 4;
printf("%d\n",func(x));
}
1. 【问题描述】
编写函数int sum(int x),求整数x的各位数字之和。
在main函数中测试该函数:从键盘输入一非负整数,然后调用sum函数计算各位数字之和并输出结果。
【输入形式】
输入一个正整数。
【输出形式】
输出该整数各位数字之和。
【样例输入】
58
【样例输出】
13
【样例说明】
输入整数58,其各位数字之和为:5+8 = 13。
2. 【问题描述】
编写一函数int comb(int a,int b),将两个两位数的正整数a、b合并形成一个整数并返回。合并的方式是:将a的十位和个位数依次放在结果的十位和千位上, b的十位和个位数依次放在结果的个位和百位上。例如,当a=45,b=12。调用该函数后,返回5241。要求在main函数中调用该函数进行验证:从键盘输入两个整数,然后调用该函数进行合并,并输出合并后的结果。
【输入形式】
输入两个两位数的正整数,以空格隔开。
【输出形式】
输出合并后的正整数。
【输入样例】
45 12
【输出样例】
5241
3. 【问题描述】用直线对圆进行一次分割,可以把圆分成两块。第二次分割,最多可以分成4块。第三次最多可以分成7块(如图)。给定正整数N(1≤N≤65535),求经过N次分割后,最多能把圆分成多少块。
【输入文件】从标准输入读取输入。只有一个整数N,代表分割的次数。
【输出文件】向标准输出打印结果。输出只有一个数字,是经过N次分割后最多分成的块数。在行末要输出一个回车符。
【输入样例】 3
【输出样例】 7
【样例说明】把圆分割三次,最多可以分成7块
4. 【问题描述】用递归方法编写求最大公因子程序。两个正整数x和y的最大公因子定义为:如果y<=x且x mod y=0时,gcd(x,y)=y;如果y>x时,gcd(x,y)=gcd(y,x);其他情况,gcd(x,y)=gcd(y,x mod y)
【输入形式】用户在第一行输入两个数字,数字之间用空格分割。
【输出形式】程序在下一行输出前面输入的两个数字的最大公因子。
【样例输入】36 24
【样例输出】12
【样例说明】用户输入36,24,程序输出它们的最大公因子12
5. 【问题描述】输入一个自然数N(1≤N≤9),要求输出如下的魔方阵,即边长为2*N-1,N在中心出现一次,其余位置上的数字从外向中心逐渐增大。
N=3时:
11111
12221
12321
12221
11111
N=4时:
1111111
1222221
1233321
1234321
1233321
1222221
1111111
【输入形式】从标准输入读取一个整数N。
【输出形式】向标准输出打印结果。输出符合要求的方阵,每个数字占一个字符宽度,在每一行末均输出一个回车符。
【输入样例】3
【输出样例】
11111
12221
12321
12221
11111
6. 【问题描述】
在屏幕上显示如下杨辉三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
… … … … … … …
【输入形式】
从键盘输入整数n(n>=0)
【输出形式】
在屏幕上输出n+1行杨辉三角形。
【输入样例】
3
【输出样例】
------***1
----***1***1
--***1***2***1
***1***3***3***1
其中-和*都是空格位
即每个数字占四位!