Res - 2009夏学期C语言上机练习参考答案汇总 下载本文

夏学期C程序设计上机练习参考答案

#include int main(void) { int i, n; int repeat, ri; double denominator, numerator, sum, temp; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ sum=0; denominator=1; numerator=2; for(i=1;i<=n;i++){ sum += numerator/denominator; temp = denominator; /* 为求下一项分 scanf(\ strcpy(max,str); for(i=1;i<5;i++){ } scanf(\if(strcmp(str,max)>0) strcpy(max,str); printf(\}

80022 找最长字符串

输入一个正整数 repeat (0

输入一个正整数 n (1

输入输出示例:括号内为说明 输入:

3 (repeat=3) 5 (n=5)

melon peach pear strawberry orange 3 (n=3) pear berry orange 4 (n=4) melon peach pear apple 输出:

The longest is: strawberry The longest is: orange The longest is: melon

#include #include int main(void) { char sx[80], longest[80]; int i, n; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ scanf(\子,保留当前项分母 */ } denominator=numerator; numerator=numerator+temp; printf(\ } }

80021 找最大的字符串

输入5个字符串,输出其中最大的字符串。 输入输出示例:括号内为说明 输入: peach pear melon orange berry 输出: Max is: pear

#include #include int main(void) { char str[80], max[80]; int i; 21

夏学期C程序设计上机练习参考答案

}

} strcpy(longest,sx); for(i=1;istrlen(longest)) } printf(\ strcpy(longest,sx); scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ gets(str); scanf(\ getchar(); delchar(str,c); printf(\ puts(str); } } void delchar(char *str, char c) { int i,j; i = 0, j=0; while (str[i]!='\\0') { } str[j]='\\0'; }

80024 使用函数实现字符串复制

输入一个正整数 repeat (0

输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,再输出字符串 s。

要求定义并调用函数 strmcpy(s,t,m), 它的功能是将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,函数形参s和t的类型是字符指针,形参m的类型是int,函数类型是void。

输入输出示例:括号内为说明 输入:

3 (repeat=3) happy new year 7

if (str[i] != c) /* 若当前字符是要被保留的 */ { } else i++; /* 否则查看下一个元素 */ str[j]=str[i]; i++; j++; 80023 使用函数删除字符串中的字符

输入一个正整数 repeat (0

输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的所有字符 c 删除。

要求定义并调用函数delchar(str,c), 它的功能是将字符串 str 中出现的所有 c 字符删除,函数形参str的类型是字符指针,形参c的类型是char,函数类型是void。 输入输出示例:括号内为说明 输入

3 (repeat=3)

happy new year (字符串\a (待删除的字符'a') bee (字符串\e (待删除的字符'e') 111211 (字符串\1 (待删除的字符'1') 输出

result: hppy new yer (字符串\中的字符'a'都被删除)

result: b (字符串\中的字符'e'都被删除)

result: 2 (字符串\中的字符'1'都被删除)

#include void main() { char c; char str[80]; int repeat, ri; void delchar(char *str, char c); 22

夏学期C程序设计上机练习参考答案

happy 1 new 4 输出:

new year (从\第7个字符开始组成的新字符串为\)

happy (从\第1个字符开始组成的新字符串为\)

error input (\的长度小于4)

#include #include void main() { char s[80], t[80]; int m; int repeat, ri; void strmcpy(char *s,char *t, int m); scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ gets(t); scanf(\ getchar(); if(strlen(t)

80025 判断回文字符串

输入一个正整数 repeat (0

输入一个字符串(长度不超过80),判断该字符串是否为“回文”。“回文”是指顺读和倒读都一样的字符串,如“XYZYX”和“xyzzyx”。

要求定义并调用函数 mirror(p)判断字符串 p 是否为“回文”,如果 p 是回文字符串,返回1,否则,返回0,函数形参 p 的类型是字符指针,函数类型是 int。 输入输出示例:括号内为说明 输入: 2 abcddcba abcddcb 输出: YES NO

#include #include void main() { char s[80]; int repeat, ri; int mirror(char *p); scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ gets(s); if(mirror(s) != 0) printf(\ (repeat=2)

puts(s); } } } void strmcpy(char *s,char *t,int m) { int i,j; for(i=m-1,j=0;*(t+i)!='\\0';i++,j++) *(s+j)=*(t+i); *(s+j)='\\0'; } 或者void strmcpy()用数组元素表示 void strmcpy(char s[],char t[],int m) { else printf(\ } } int mirror(char *p) 23

夏学期C程序设计上机练习参考答案

{ int n,i; n=strlen(p); for(i=0;i<=n/2;i++,n--) if (p[i]== p[n-1]) /* 此句也可写成if(*(p+i)==*(p+n-1)) */ return 1; return 0; }

80026 分类统计字符个数

输入一行字符(不超过80个),统计其中的大写字母、小写字母、空格、数字以及其他字符的个数。 输入输出示例: 输入: bFaE3+8 =1R 输出:

upper: 3 lower: 2 blank: 1 digit: 3 other: 2

#include void main() { char s[80]; char *p; int blank, digit, lower, other, upper; gets(s); upper = lower = blank = digit = other = 0; int i; for(i=0;s[i]!='\\0';i++){ } printf(\%d lower: %d blank: %d digit: %d if(s[i]>='A'&&s[i]<='Z') upper++; } 夏5周 10014

计算函数P(n,x)

输入一个正整数repeat (0

输入一个整数n (n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。

[1 (n=0)

p(n, x) = [x (n=1)

[((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n (n>1)

例:括号内是说明 输入 3 0 1 10 输出

p(0, 0.90)=1.00 p(1, -9.80)=-9.80 p(10, 1.70)=3.05

#include double p(int n, double x); int main(void) { int repeat, ri; int n; double x, result; scanf(\ for(ri = 1; ri <= repeat; ri++) { scanf(\ result = p(n, x); printf(\other++; } } double p(int n, double x) { (repeat=3) 0.9 -9.8 1.7

(n=0,x=0.9) (n=1,x=-9.8) (n=10,x=1.7)

else if(s[i]>='a'&&s[i]<='z') lower++; else if(s[i]==' ') blank++; else if(s[i]>='0'&&s[i]<='9') else digit++; other: %d\\n\ 24