{
int i;
for(i = 1;i < 4;i ++ ) { }
printf(”\\n”); return 0; } 答:
246
5. 指出下列函数定义中的错误:
double sum(double x,y); {
return (x*x+y*y); } 答:
函数的第二个参数应改为:double y
6.问一个人的年龄多大,问第五个人他说比第四个人大2岁。问第四个人,他说比第三个人大2岁。问第三个人,他说比第二个人大2岁。问第二个人,他说比第一个人大2岁。问第一个人,他说是10岁。用递归调用实现。 答:
void age(int n)
{
int c;
if(n == 1) c = 10; else c = age(n-1)+2; return(c); }
int main() {
printf(\return 0; }
7.编写一个函数,将两个字符串连接。 答:
char *strcat(char *cTarget, const char *cSource) {
fun();
char *cOriginal = cTarget;
while(*cTarget) cTarget ++; // Find the end of the string while(*cTarget++ = *cSource ++); return(cOriginal); }
8.编写函数int fullNumber(int value),其功能是如果参数是完数则返回该数。所谓完数,即指该数等于其所有真因子(不包括其本身)之和,例如,6的因子有1、2、3,且6=1+2+3,故6为完数。 答:
int fullNumber(int iValue) {
int i = 1;iSum = 0; do {
if(value%i == 0) iSum = iSum+i; i++
}while(i <= iValue) if(iSum == iValue)
return iValue; else
}
9. 编写一函数,由实参传入一个字符串。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数,在主函数中输入字符串以及输出上述结果。 答:
stat(char cArticle[240])
{
int i;
int iUpper = 0,iLower = 0,num = 0,iSpace = 0,iOther = 0; for(i = 0;i < 240;i++) {
return -1;
if(cArticle[i] == ’ ’) iSpace++;
else if(cArticle[i] >= 'A'&& cArticle[i] <= 'Z') iUpper++; else if(cArticle[i] >= 'a'&& cArticle[i] <= 'z') iLower++; else if(cArticle[i] >= '0'&& cArticle[i] <= '9') num++; else iOther++; }
printf(\
are
%d
upper
letter
%dlower
letter } main() {
%dnumber %dother %dspace in this article\
iUpper,iLower,num,iOther,iSpace);
char cArticle[240]; scanf(\
stat(cArticle); }
10.给出年、月、日,计算该日是该年的第几天。 答:
int main() {
int day,month,year,sum,leap;
printf(”\\nplease input year,month,day\\n”); scanf(”%d,%d,%d”,&year,&month,&day); switch(month) {
case 1: sum = 0; break; case 2: sum = 31; break; case 3: sum = 59; break; case 4: sum = 90; break; case 5: sum = 120; break; case 6: sum = 151; break; case 7: sum = 181; break; case 8: sum = 212; break; case 9: sum = 243; break; case 10: sum = 273; break; case 11: sum = 304; break; case 12: sum = 334; break;
default: printf(”data error”); break; }
sum = sum + day;
if(year@0 == 0||(year%4 == 0&&year0 != 0))
leap = 1; leap = 0; else
if(leap == 1&&month > 2) sum ++;
printf(”It is the %dth day.”,sum);
} 思考题
1. 编写一个递归函数void palin (int n),其功能为将给定的n个字符逆序输出。例如,通过n输入字符 abc,输出cba。 答:
#include
int i=5;
}
void palin(int n) {
char cNext; if(n<=1) { } else {
}
2. 用C程序实现简单计算器。要求分别用子函数实现+、-、*、/的功能,且根据您的输入自动调用相应的子函数。 答:
float add(float x,float y) {
}
float sub(float x,float y) {
return (x+y); }
cNext=getchar(); palin(n-1); putchar(cNext); cNext=getchar(); printf(\putchar(cNext); void palin(int n); printf(\palin(i); printf(\
}
return (x-y);
float mul(float x,float y) {
}
float div(float x,float y) {
return (x/y); }
int main() {
float x,y,fResult; char c; if(c == '+')
fResult = add(x,y); fResult = sub(x,y); fResult = mul(x,y); fResult = -1; fResult = div(x,y); else if(c == '-')
else if(c == '*') else if(y == 0) else
if(fResult == -1)
printf(\
else
printf(\return 0; }
return (x*y);
scanf(\