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");