c语言编程题目汇总.docx
- 文档编号:12096774
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:47
- 大小:27.64KB
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;i if(strcmp(a[i].name,nam)==0)break; if(i elseprintf("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;i if(strcmp(a[i].name,nam)==0) {for(j=i;j a[j]=a[j+1];x=0; break; } if(x)printf("notfound"); n--; } voidoutput() {inti; for(i=0;i printf("%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;i for(j=0;j scanf("%d",&a[i][j]); s(a,b,n); for(i=0;i {for(j=0;j printf("%d",b[i][j]); printf("%d\n",b[i][n-1]); } } voids(int(*m)[20],int(*h)[20],intn) {inti,j; for(i=0;i for(j=0;j h[j][i]=m[i][j]; }//转置 试题查看 标题: 8.对称数组判断 时限: 1000ms 内存限制: 10000K 总时限: 3000ms 描述: 设计一个函数,判断二维数组是否为对称数组(对称矩阵),如果是,则返回1;如果不是,则返回0,并在主函数中调用此函数,判断一个4*4的数组是否为对称数组。 输入: 二维数组 输出: 是否为对称数组 输入样例: 4 1234 2567 3689 4790 输出样例: Yes 提示: 来源: #include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 题目 汇总