c语言编程题目汇总.docx
《c语言编程题目汇总.docx》由会员分享,可在线阅读,更多相关《c语言编程题目汇总.docx(47页珍藏版)》请在冰豆网上搜索。
c语言编程题目汇总
形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放
constfloatpi=3.;在整常量后加字母l或L,
认为它是longint型常量
实型常量的类型
默认double型
在实型常量后加字母f或F,
认为它是float型
floata=567.789;printf("%e",a);
强制转换得到所需类型的中间变量,原变量类型不变
赋值转换规则:
使赋值号右边表达式值自动转换成其左边变
量的类型
#include
#include
#include
voidmain()
{intmagic,guess;
srand(time(NULL));
magic=rand()%100+1;
printf("Enteryourguess:
");
scanf("%d",&guess);
if(guess==magic)
printf("**Right**\n");
else
printf("**Wrong**\n");
printf("Themagicnumberis%d,haha.\n",magic);
}
对于迭加,若分母规律不明显时,应考虑分子
初始化时不允许连等
若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换
#include
#include
main()
{chara[10][20],t[20];
inti,j,k;
for(i=0;i<10;i++)
gets(a[i]);
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if((strcmp(a[k],a[j]))<0)k=j;
if(k!
=i)strcpy(t,a[k]),strcpy(a[k],a[i]),strcpy(a[i],t);
}
for(i=0;i<10;i++)
puts(a[i]);
}
试题查看
标题:
3.二进制文件操作
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
已知一个文本文件中存放了10个整形的数据,将它们以二进制数据的形式存入另一个文件。
输入:
存放了10个整形的数据的文本文件。
输出:
二进制数据文件。
输入样例:
E:
\\DATA\\72\\f0.txt
E:
\\DATA\\72\\result.dat
输出样例:
23456778453212569956
提示:
部分代码如下:
intmain(void)
{
inta[10],i=0;
charfilename1[80],filename2[80];
FILE*fp1,*fp2;
/******************/
/*在此编写代码*/
/******************/
/*验证结果的代码,请不要改动*/
if((fp1=fopen(filename2,"rb"))==NULL)
{
printf("Resultfileopenerror!
\n");
exit
(1);
}
for(i=0;i<10;i++)
{
fread(&a[i],sizeof(int),1,fp1);/*读出数据*/
}
if(fclose(fp1))
{
printf("Resultfilecloseerror!
\n");
exit
(1);
}
for(i=0;i<9;i++)
printf("%d",a[i]);
printf("%d\n",a[i]);
return0;
}
来源:
#include
#include
#include
main()
{
inta[10],i=0;
charfilename1[80],filename2[80];
FILE*fp1,*fp2;
/******************/
gets(filename1);
gets(filename2);
if(!
(fp2=fopen(filename1,"r")))
{printf("Inputfileopenerror!
\n");
exit
(1);
}
for(i=0;i<10;i++)
fscanf(fp2,"%d",&a[i]);//当有空格和制表符时,自动终止
fclose(fp2);
if(!
(fp1=fopen(filename2,"wb")))
{printf("Inputfileopenerror!
\n");
exit
(1);
}
fwrite(a,sizeof(int),10,fp1);
fclose(fp1);
/******************/
/*验证结果的代码,请不要改动*/
if((fp1=fopen(filename2,"rb"))==NULL)
{
printf("Resultfileopenerror!
\n");
exit
(1);
}
for(i=0;i<10;i++)
{
fread(&a[i],sizeof(int),1,fp1);/*读出数据*/
}
if(fclose(fp1))
{
printf("Resultfilecloseerror!
\n");
exit
(1);
}
for(i=0;i<9;i++)
printf("%d",a[i]);
printf("%d\n",a[i]);
return0;
}
试题查看
标题:
2.数据文件
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
已知一个文件中存放了10个整型数据,将他们排序后存入另一个文件。
输入:
存放了10个整型数据的二进制数据文件名(包含全路径)
输出:
排序后的数据,并将其存入结果数据文件中。
输入样例:
E:
\\DATA\\71\\f0.dat
E:
\\DATA\\71\\result.dat
输出样例:
3439496571759193455723
提示:
部分代码如下:
intmain(void)
{
inta[10],temp=0,i=0,j=0,k=0;
charfilename1[80],filename2[80];
FILE*fp1,*fp2;
/******************/
/*在此编写代码*/
/******************/
/*验证结果的代码,请不要改动*/
if((fp1=fopen(filename2,"rb"))==NULL)
{
printf("Resultfileopenerror!
\n");
exit
(1);
}
for(i=0;i<10;i++)
{
fread(&a[i],sizeof(int),1,fp1);/*读出数据*/
}
if(fclose(fp1))
{
printf("Resultfilecloseerror!
\n");
exit
(1);
}
for(i=0;i<9;i++)
printf("%d",a[i]);
printf("%d\n",a[i]);
return0;
}
来源:
#include
#include
#include
main()
{
inta[10],temp=0,i=0,j=0,k=0;
charfilename1[80],filename2[80];
FILE*fp1,*fp2;
/******************/
gets(filename1);
gets(filename2);
if(!
(fp2=fopen(filename1,"rb")))
{printf("Fileopenerror!
\n");
exit
(1);
}
fread(a,sizeof(int),10,fp2);
fclose(fp2);
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(a[k]>a[j])k=j;
if(k!
=i)temp=a[k],a[k]=a[i],a[i]=temp;
}//排序
if(!
(fp1=fopen(filename2,"wb")))
{printf("Fileopenerror!
\n");
exit
(1);
}
fwrite(a,sizeof(int),10,fp1);
fclose(fp1);
/******************/
/*验证结果的代码,请不要改动*/
if((fp1=fopen(filename2,"rb"))==NULL)
{
printf("Resultfileopenerror!
\n");
exit
(1);
}
for(i=0;i<10;i++)
{
fread(&a[i],sizeof(int),1,fp1);/*读出数据*/
}
if(fclose(fp1))
{
printf("Resultfilecloseerror!
\n");
exit
(1);
}
for(i=0;i<9;i++)
printf("%d",a[i]);
printf("%d\n",a[i]);
return0;
}
试题查看
标题:
1.文本文件中字符个数统计
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
统计一个文本文件中字符的个数。
输入:
文本文件名称(包含全路径)
输出:
文本文件中字符的个数。
输入样例:
E:
\\DATA\\70\\f1.txt
输出样例:
16
提示:
来源:
#include
#include
main()
{chara[20],x;
intcount=0;
FILE*fp;
gets(a);
if((fp=fopen(a,"r"))==NULL)
{printf("Resultfileopenerror!
\n");
exit
(1);}
while((x=fgetc(fp))!
=EOF)
count++;
printf("%d\n",count);
}
试题查看
标题:
3.电话薄管理程序设计
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
1.编写手机电话薄管理程序,用结构体实现下列功能:
(1)手机电话薄含有姓名、宅电、手机3项内容,建立含有上述信息的电话簿。
(2)输入姓名,查找此人的号码。
(3)插入某人的号码。
(4)输入姓名,删除某人的号码。
(5)将以上功能分别用子函数实现,编写主函数,可以根据用户的需要,调用相应的子函数。
建议用结构体完成。
输入:
操作码
输出:
处理后的数据
输入样例:
无
输出样例:
无
提示:
1、程序主函数如下所示,请认真理解,不要更改代码。
intmain(void)/*主函数*/
{
intk;
do
{
printf("0:
exit\n");/*打印菜单项*/
printf("1:
creat\n");
printf("2:
search\n");
printf("3:
insert\n");
printf("4:
delete\n");
printf("5:
output\n");
printf("pleaseselect:
");
scanf("%d",&k);/*输入选择项*/
switch(k)
{
case0:
exit(0);/*退出函数*/
case1:
creat();
break;
case2:
search();
break;
case3:
insert();
break;
case4:
delete();
break;
case5:
output();
break;/*调用子函数*/
default:
exit(0);
}
}
while
(1);
return0;
}
2、根据主函数,设计相应函数完成指定功能。
3、create时,可用while
(1)循环连续创建,当输入'*'号时创建结束。
4、索引关键字为姓名。
来源:
#include
#include
#include
structstud
{
charname[20];
chartele[13];
charphone[13];
};
structstuda[10];
intn=0;
voidcreat()
{inti=0;
while
(1)
{
scanf("%s",a[i].name);
if(strcmp(a[i].name,"*")==0)
break;
scanf("%s%s",a[i].tele,a[i].phone);
//printf("%s%s%s\n",a[i].name,a[i].tele,a[i].phone);
i++;
}
n=i;
}
voidsearch()
{charnam[10];
inti;
scanf("%s",nam);
for(i=0;iif(strcmp(a[i].name,nam)==0)break;
if(ielseprintf("notfound");
}
voidinsert()
{
scanf("%s",a[n].name);
scanf("%s%s",a[n].tele,a[n].phone);
n++;
}
voiddelete()
{inti,j;intx=1;
charnam[10];
scanf("%s",nam);
for(i=0;iif(strcmp(a[i].name,nam)==0)
{for(j=i;ja[j]=a[j+1];x=0;
break;
}
if(x)printf("notfound");
n--;
}
voidoutput()
{inti;
for(i=0;iprintf("%s%s%s\n",a[i].name,a[i].tele,a[i].phone);
}
intmain(void)/*主函数*/
{
intk;
do
{
printf("0:
exit\n");/*打印菜单项*/
printf("1:
creat\n");
printf("2:
search\n");
printf("3:
insert\n");
printf("4:
delete\n");
printf("5:
output\n");
printf("pleaseselect:
");
scanf("%d",&k);/*输入选择项*/
switch(k)
{
case0:
exit(0);/*退出函数*/
case1:
creat();
break;
case2:
search();
break;
case3:
insert();
break;
case4:
delete();
break;
case5:
output();
break;/*调用子函数*/
default:
exit(0);
}
}
while
(1);
return0;
}
试题查看
标题:
2.结构体数组的定义与引用
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
定义一个职工结构体数组,从键盘输入5位职工的信息,打印出最高的工资。
输入:
从键盘输入5位职工的信息(4个数据,每个占一行,工资有两位小数)。
输出:
打印出最高的工资。
输入样例:
liuxin
11
1234.23
liyixin
11
5234.24
liuxin
11
1244.25
liuxin
11
1284.26
liuxin
11
1232.27
输出样例:
5234.24
提示:
来源:
#include
#include
structm
{chara[20];
charb[20];
intg;
floatf;
}st[5];
main()
{inti;floatmax;
for(i=0;i<5;i++)
{gets(st[i].a);
gets(st[i].b);
scanf("%d",&st[i].g);
scanf("%f%*c",&st[i].f);//跳过回车键,如果不跳过,会把回车键当做字符串接收到下一个结构体变量中
}
max=st[0].f;
for(i=1;i<5;i++)
if(st[i].f>max)max=st[i].f;
printf("%.2f\n",max);
}//结构数组,求工资最值
试题查看
标题:
5.偶数位清零
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
从键盘任意输入整数a,将其偶数位清零,其他位保留。
输入:
整数a。
输出:
偶数位清零,其他位保留后的数。
输入样例:
0XFFFF
输出样例:
5555<--十六进制
提示:
来源:
#include
main()
{inta,b;
scanf("%x",&a);
b=a&0x5555;
printf("%x\n",b);
}//偶数位清零
#include
#include
main()
{intn,a[20],m,*p=a;
ints(int*p,intn);
scanf("%o",&n);
m=s(a,n);
printf("%d\n",m);
}
ints(int*p,intn)
{inti=0,j,s=0,t;
do{t=n%8;
n/=8;
p[i]=t;
i++;}while(n);
for(j=0;j
s+=p[j]*pow(8,j);
returns;
}
//进制转换
试题查看
标题:
1.结构体的定义与引用
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
定义一个职工结构体数据类型,并定义职工结构体变量。
输入:
从键盘输入一个职工的信息。
(4个数据,每个占一行,工资有两位小数)
输出:
输出职工信息。
(4个数据,每个占一行)
输入样例:
zhangping
21
2183.55
输出样例:
zhangping
21
2183.55
提示:
来源:
#include
#include//结构体定义及输出
structs
{chara[20];
charb[20];
intx;
floatf;
}
main()
{structsm;
gets(m.a);
gets(m.b);
scanf("%d",&m.x);
scanf("%f",&m.f);
printf("%s\n%s\n%d\n%.2f\n",m.a,m.b,m.x,m.f);
}
试题查看
标题:
4.矩阵转置函数设计
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
设计一个函数,将任意n×n的矩阵转置,并在主函数中调用此函数将一个4*4的矩阵转置。
输入:
n×n的矩阵
输出:
转置后的n×n的矩阵
输入样例:
3
123
456
789
输出样例:
147
258
369
提示:
来源:
#include
main()
{inta[20][20],b[20][20],i,j,n;
voids(int(*m)[20],int(*h)[20],intn);
scanf("%d",&n);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
s(a,b,n);
for(i=0;i{for(j=0;jprintf("%d",b[i][j]);
printf("%d\n",b[i][n-1]);
}
}
voids(int(*m)[20],int(*h)[20],intn)
{inti,j;
for(i=0;ifor(j=0;jh[j][i]=m[i][j];
}//转置
试题查看
标题:
8.对称数组判断
时限:
1000ms
内存限制:
10000K
总时限:
3000ms
描述:
设计一个函数,判断二维数组是否为对称数组(对称矩阵),如果是,则返回1;如果不是,则返回0,并在主函数中调用此函数,判断一个4*4的数组是否为对称数组。
输入:
二维数组
输出:
是否为对称数组
输入样例:
4
1234
2567
3689
4790
输出样例:
Yes
提示:
来源:
#include