C语言编程题1

  • 格式:doc
  • 大小:67.50 KB
  • 文档页数:16

如果您需要使用本文档,请点击下载按钮下载!

授课:XXX 1、 已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

(知识点:控制语句)

参考答案:

#include

#include

void main()

{

int num,a,b,c;

for(num=101;num<1000;num++)

{

a=num/100;

b=num%100/10;

c=num%10;

if(num+c*100+b*10+a==1333)

printf("\n%d+%d=1333\n",num,c*100+b*10+a);

}

}

2、将一个整数中的每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。

(知识点:控制语句、函数、指针)

参考答案:

#include

void fun(long s,long *t)

{ int d; long s1=1;

*t=0;

while (s>0)

{ d=s%10;

if(d%2!=0)

{

*t=d*s1+*t;

s1=s1*10;

}

s/=10;

}

}

main()

{ long s,t;

printf("\nPlease enter s:");

scanf("%ld",&s);

fun(s,&t);

printf("The result is:%ld\n",t);

}如果您需要使用本文档,请点击下载按钮下载!

授课:XXX 3、 设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),编程,输出所有满足条件的N。

(知识点:控制语句)

参考答案:

main()

{

int a=1,b,c,d;

for(d=0;d<=9;d++)

for(b=0;b<=1;b++)

for(c=0;c<=9;c++)

if(9000*a+900*b+90*c+9*d == 1000*d+100*c+10*b+a)

printf("%d\n",1000*a+100*b+10*c+d);

}

4、 编程,求解下列算式中各字母所代表的数字并输出。

PEAR

- ARA

──────

PEA

(知识点:控制语句)

参考答案:

main()

{

int p,e,a,r;

for(p=1;p<=9;p++)

for(e=0;e<=9;e++)

for(a=1;a<=9;a++)

for(r=0;r<=9;r++)

if(1000*p+100*e+10*a+r - 101*a-10*r == 100*p+10*e+a)

printf("p=%d ; e=%d ; a=%d ; r=%d \n",p,e,a,r);

}

5、有一个字符串,包括n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输出复制结果。

(知识点:控制语句、字符串、指针)

参考答案:

#include

#include

main()

{ int m;

char *str1[80],*str2[80];

printf("Input a string(length<80:");

scanf("%s",str1); 如果您需要使用本文档,请点击下载按钮下载!

授课:XXX printf("\nWhich character starting from?");

scanf("%d",&m);

if(strlen(str1)

printf("\nError input !");

else

{ copystr(str1,str2,m);

printf("\nResult is : %s",str2);

}

)

copystr(p1,p2,m)

char *p1,*p2;

int m;

{

int n;

n=0;

while(n<=m-1)

{ n++;

p1++;

}

while(*p1!='\0')

{ *p2=*p1;

p1++;

p2++;

}

*p2='\0';

}

6、编一程序,能把从终端读入的一个字符中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存(用字符!表示输入字符串的结束)。

(知识点:文件)

参考答案:

#include

void main()

{ FILE *fp;

char str[100];

int i=0;

if((fp=fopen("test","w"))==NULL)

{ printf("Can't open this file.\n");

exit(0);

}

printf("Input a string : \n");

gets(str);

while(str[i]!='!') 如果您需要使用本文档,请点击下载按钮下载!

授课:XXX { if(str[i]>='a'&&str[i]<='z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

if((fp=fopen("test","r"))==NULL)

{ printf("can't open test r\n");

exit(0);

}

fgets(str,strlen(str)+1,fp);

printf("Output is : %s",str);

fclose(fp);

}

7、编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的

顺序依次放到一个字符串中。

例如, 二维数组中的数据为:

W W W W

S S S S

H H H H

则字符串中的内容应是: WSHWSHWSH。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入

你编写的若干语句。

(知识点:数组、指针)

给定源程序:

#include

#define M 3

#define N 4

void fun(char s[][N], char *b)

{

int i,j,n=0;

for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */

{

}

b[n]='\0';

}

main()

{ char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};

int i,j;

printf("The matrix:\n");

for(i=0; i

{ for(j=0;j

printf("\n"); 如果您需要使用本文档,请点击下载按钮下载!

授课:XXX }

fun(w,a);

printf("The A string:\n");puts(a);

printf("\n\n");

}

参考答案:

void fun(char s[][N], char *b)

{

int i,j,n=0;

for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */

{

for(j = 0 ; j < M ; j++)

{

b[n] = s[j][i] ;

n = i * M + j + 1;

}

}

b[n]='\0';

}

8、编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机

函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]

中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,

其余依此类推, 把100岁 (含100)以上年龄的人数都放在d[10]中。结果在主函数

中输出。

注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

你编写的若干语句。

(知识点:数组、指针)

给定源程序:

#include

#define N 50

#define M 11

void fun( int *a, int *b)

{

}

double rnd()

{ static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m; return((double)r/m);

}

main()

{ int age[N], i, d[M];

for(i=0; i

printf("The original data :\n");