本文目录一览:
求山东理工大学C语言实验答案(在线等、求速度)
实验一 简单C程序的调试
一、实验目的
熟悉在VC的运行环境下,编辑调试C语言程序的一般步骤。掌握编写与调试简单C语言程序的基本方法。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。
2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,并记录下调试运行过程中出现的所有错误及改正方法。
4. 掌握如何根据出错信息查找语法错误。
5. 写出本次实验的实验报告。
三、实验内容
1.从键盘输入一个以秒为单位的时间值(如10000秒),将其转化为以时、分、秒表示的时间值并输出。
#include stdio.h
void main()
{int time,h,min,sec;
printf("请输入时间,以秒为单位\n");
scanf("%d",time);
h=time/3600;
min=(time%3600)/60;
sec=(time%3600)%60;
printf(" 时间转换为:%d h %d min %d s\n",h,min,sec);
}
2.已知如下二元一次方程组的系数值,求该方程组的解。
a1x+b1y=c1
a2x+b2y=c2
#include stdio.h
void main()
{float a1,b1,c1,a2,b2,c2,m,n,p;
printf(" 请输入二元一次方程组的各项参数:");
scanf("%f %f %f %f %f %f",a1,b1,c1,a2,b2,c2);
p=a1*b2-a2*b1;
if(p!=0)
m=(b2*c1-b1*c2)/(a1*b2-a2*b1);
n=(a1*c2-a2*c1)/(a1*b2-a2*b1);
printf("%fx+%fy=%f\n%fx+%fy=%f\n",a1,b1,c1,a2,b2,c2);
printf("解为:\n x=%f\n y=%f\n",m,n);
}
实验二 顺序结构程序设计
一、实验目的
掌握顺序程序设计的基本思想和顺序程序设计的基本方法
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。
2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,并记录下调试运行过程中出现的所有错误及改正方法。
4. 掌握如何根据出错信息查找语法错误。
5. 掌握如何通过动态跟踪程序运行过程查找逻辑错误。
6. 写出本次实验的实验报告。
三、实验内容
1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年的1月1日,总共有多少天(提示:400年97闰)。
#include stdio.h
void main()
{
int year,days;
printf("please enter a year:");
scanf("%d",year);
days=365*(year-1)+97*((year-1)/400)+24*(((year-1)%400)/100)+(((year-1)%400)%100)/4+1;
printf("公元1年1月1日到公元%d年1月1日有%d天。\n",year,days);
}
实验三 选择结构程序设计
一、 实验目的
掌握选择结构程序设计的一般方法及选择结构程序的调试方法。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。
2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,并记录下调试运行过程中出现的所有错误及改正方法。
4. 掌握如何根据出错信息查找语法错误。
5. 掌握如何通过动态跟踪程序运行过程查找逻辑错误。
6. 写出本次实验的实验报告。
三、实验内容
1.编程序实现:输入一个年份和月份,求出这个月的天数并输出。
#include stdio.h
void main()
{
int year,month,n;
printf("please enter a date like 2010/4\n");
scanf("%d/%d",year,month);
switch (month)
{
case 1: n=31;break;
case 2: n=28;break;
case 3: n=31;break;
case 4: n=30;break;
case 5: n=31;break;
case 6: n=30;break;
case 7: n=31;break;
case 8: n=31;break;
case 9: n=30;break;
case 10: n=31;break;
case 11: n=30;break;
case 12: n=31;break;
default:break;
}
if(year%4==0year%100!=0||year%400==0month==2)
n=29;
printf("%d年%d月有%d天。、\n",year,month,n);
}
2.编程序实现:输入一个年份y,求出y年的1月1日是星期几(提示:公元1年1月1日是星期一)。
#include stdio.h
void main()
{
int m,n=0,year,i;
printf("please enter a year");
scanf("%d",year);
n=365*(year-1)+97*((year-1)/400)+24*(((year-1)%400)/100)+(((year-1)%400)%100)/4+1;
printf("%d年1月1日是",year);
m=n%7;
switch (m)
{
case 0: printf("星期天\n");
case 1:printf("星期一\n");break;
case 2:printf("星期二\n");break;
case 3:printf("星期三\n");break;
case 4:printf("星期四\n");break;
case 5:printf("星期五\n");break;
case 6:printf("星期六\n");break;
default:break;
}
}
3.(拓展题,选做)编程序实现:输入任意一个日期的年、月、日的值,求出是星期几并输出。
#include stdio.h
void main()
{
int year,month, day,n,i;
printf("please enter a date like 2010/4/16\n");
scanf("%d/%d/%d",year,month,day);
n=365*(year-1)+97*((year-1)/400)+24*(((year-1)%400)/100)+(((year-1)%400)%100)/4;
switch (month)
{
case 1: n+=day;break;
case 2: n+=day+31;break;
case 3: n+=day+59;break;
case 4: n+=day+90;break;
case 5: n+=day+120;break;
case 6: n+=day+151;break;
case 7: n+=day+181;break;
case 8: n+=day+212;break;
case 9: n+=day+243;break;
case 10: n+=day+274;break;
case 11: n+=day+304;break;
case 12: n+=day+344;break;
default:break;
}
if(year%4==0year%100!=0||year%400==0month2)
n+=1;
n=n%7;
switch (n)
{
case 0: printf("星期天\n");
case 1:printf("星期一\n");break;
case 2:printf("星期二\n");break;
case 3:printf("星期三\n");break;
case 4:printf("星期四\n");break;
case 5:printf("星期五\n");break;
case 6:printf("星期六\n");break;
default:break;
}
}
实验四 循环程序综合应用
一、实验目的:
掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。
二、实验要求:
1.仔细阅读下列实验内容,并编写出相应的C语言源程序。
2.在VC运行环境下,编辑录入源程序。
3.调试运行源程序,并记录下调试运行过程中出现的所有错误及改正方法。
4.掌握如何根据出错信息查找语法错误。
5.掌握如何通过动态跟踪程序运行过程查找逻辑错误。
6.写出本次实验的实验报告。
三、实验内容:
1.编程序实现如下功能:输入任意一个年份的值,按以下格式输出该年份一月份的公历日历。
要求用循环控制打印。
2011年日历
1月
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
#include stdio.h
void main()
{
int year,days,i,m,k=0,j;
printf("please enter a year:");
scanf("%d",year);
days=365*(year-1)+97*((year-1)/400)+24*(((year-1)%400)/100)+(((year-1)%400)%
100)/4+1;
m=days%7;
printf("%d年日历\n一月\n",year);
printf(" 日 一 二 三 四 五 六\n");
for(i=1;i=m;i++)
{
k++;
printf(" ");}
k=m;
for(j=1;j=31;j++)
{
k++;
printf("%3d",j);
if(k%7==0)
printf("\n");}
printf("\n");
}
2.(拓展题,选做)编程序实现如下功能:输入任意一个年份的值,输出该年份全年的公历日历。#include stdio.h
void main()
{
int year,days,i,m,n,k=0,j,day,month;
printf("please enter a year:");
scanf("%d",year);
printf("%d年日历\n",year);
days=365*(year-1)+97*((year-1)/400)+24*(((year-1)%400)/100)+(((year-1)%400)%100)/4+1;
for(month=1;month=12;month++)
{
switch (month)
{
case 1: day=31;break;
case 2: day=28;break;
case 3: day=31;break;
case 4: day=30;break;
case 5: day=31;break;
case 6: day=30;break;
case 7: day=31;break;
case 8: day=31;break;
case 9: day=30;break;
case 10: day=31;break;
case 11: day=30;break;
case 12: day=31;break;
default:break;
}
if(year%4==0year%100!=0||year%400==0month==2)
n=29;
switch (month)
{
case 1: days+=0;break;
case 2: days+=31;break;
case 3: days+=59;break;
case 4: days+=90;break;
case 5: days+=120;break;
case 6: days+=151;break;
case 7: days+=181;break;
case 8: days+=212;break;
case 9: days+=243;break;
case 10: days+=274;break;
case 11: days+=304;break;
case 12: days+=334;break;
default:break;
}
if(year%4==0year%100!=0||year%400==0month2)
days+=1;
m=days%7;
printf("%d月\n",month),
printf(" 日 一 二 三 四 五 六\n");
for(i=1;i=m;i++){k++;
printf(" ");}
k=m;
for(j=1;j=day;j++)
{
k++;
printf("%3d",j);
if(k%7==0)
printf("\n");}
printf("\n");
}
}
都是同学啊!
最后两题米看到答案,我的方法不大对,就不给你了。
(高分) 求大家帮我解一道c语言的题
#includestdio.h
#includestring.h
#includestdlib.h
#includemalloc.h
#includewindows.h
#includeconio.h
struct geshen_info
{
char shen_number[4];
char shen_name[20];
int guojia_number;
float guojia_jine;
int yidiao_number;
float yidiao_jie;
char tongji_date[11];
char tongji_name[10];
};
struct inc_zhangpeng_info
{
char shen_name[20];
char inc_number[12];
char inc_name[30];
int shen_number;
int inc_add_number;
float inc_add_jine;
int inc_diaochu_number;
float inc_diaochu_jine;
char tongji_date[11];
char tongji_name[10];
};
struct inc_mingxi_info
{
char inc_number[12];
int pici;
char diaochu_pinzhong[30];
int diaochu_number;
float diaochu_jine;
char diaochu_date[11];
char tongji_name[10];
};
void geshen_info_luru()
{
system("cls");
FILE *pf;
char flag='y';
struct geshen_info info;
pf=fopen("c:\\各省帐篷调出基本信息.txt","a");
while(flag=='y')
{
memset(info.shen_name,0,20);
memset(info.tongji_date,0,11);
memset(info.tongji_name,0,10);
printf("请输入省编号(三位):\n");
fflush(stdin);
fgets(info.shen_number,5,stdin);
printf("请输入省份名称:\n");
fflush(stdin);
fgets(info.shen_name,20,stdin);
printf("请输入国家分配帐篷总数:\n");
fscanf(stdin,"%d",info.guojia_number);
printf("请输入国家分配总金额:\n");
fscanf(stdin,"%f",info.guojia_jine);
printf("请输入已调出帐篷数量:\n");
fscanf(stdin,"%d",info.yidiao_number);
printf("请输入已调出帐篷金额:\n");
fscanf(stdin,"%f",info.yidiao_jie);
printf("请输入统计日期(年/月/日):\n");
fflush(stdin);
fgets(info.tongji_date,11,stdin);
printf("请输入统计员:\n");
fflush(stdin);
fgets(info.tongji_name,10,stdin);
fwrite(info,sizeof(struct geshen_info),1,pf);
printf("是否继续[y/n]:\n");
fflush(stdin);
flag=getchar();
}
fclose(pf);
}
void inc_zhangpeng_info_luru()
{
system("cls");
FILE *pf;
char flag='y';
struct inc_zhangpeng_info info;
pf=fopen("c:\\省属企业帐篷生产调出汇总基本信息.txt","a");
while(flag=='y')
{
memset(info.inc_name,0,30);
memset(info.tongji_date,0,11);
memset(info.tongji_name,0,10);
memset(info.shen_name,0,20);
printf("请输入该企业所属省份:\n");
fflush(stdin);
fgets(info.shen_name,20,stdin);
printf("请输入企业编号\n");
fflush(stdin);
fgets(info.inc_number,12,stdin);
printf("请输入企业名称\n");
fflush(stdin);
fgets(info.inc_name,30,stdin);
printf("请输入省分配帐篷总数\n");
fscanf(stdin,"%d",info.shen_number);
printf("请输入已生产帐篷数量\n");
fscanf(stdin,"%d",info.inc_add_number);
printf("请输入已生产帐篷金额\n");
fscanf(stdin,"%f",info.inc_add_jine);
printf("请输入已调出帐篷数量\n");
fscanf(stdin,"%d",info.inc_diaochu_number);
printf("请输入已调出帐篷金额\n");
fscanf(stdin,"%f",info.inc_diaochu_jine);
printf("请输入统计日期\n");
fflush(stdin);
fgets(info.tongji_date,11,stdin);
printf("请输入统计员\n");
fflush(stdin);
fgets(info.tongji_name,10,stdin);
fwrite(info,sizeof(struct inc_zhangpeng_info),1,pf);
printf("是否继续[y/n]:\n");
fflush(stdin);
flag=getchar();
}
fclose(pf);
}
void inc_mingxi_info_luru()
{
system("cls");
FILE *pf;
char flag='y';
struct inc_mingxi_info info;
pf=fopen("c:\\企业帐篷调出明细基本信息.txt","a");
while(flag=='y')
{
memset(info.diaochu_pinzhong,0,30);
memset(info.diaochu_date,0,11);
memset(info.tongji_name,0,10);
printf("请输入企业编号\n");
fflush(stdin);
fgets(info.inc_number,12,stdin);
printf("请输入调出帐篷批次\n");
fscanf(stdin,"%d",info.pici);
printf("请输入调出帐篷品种\n");
fflush(stdin);
fgets(info.diaochu_pinzhong,30,stdin);
printf("请输入调出帐篷数量\n");
fscanf(stdin,"%d",info.diaochu_number);
printf("请输入调出帐篷金额\n");
fscanf(stdin,"%f",info.diaochu_jine);
printf("请输入统计日期\n");
fflush(stdin);
fgets(info.diaochu_date,11,stdin);
printf("请输入统计员\n");
fflush(stdin);
fgets(info.tongji_name,10,stdin);
fwrite(info,sizeof(struct inc_mingxi_info),1,pf);
printf("是否继续[y/n]:\n");
fflush(stdin);
flag=getchar();
}
fclose(pf);
}
void change_geshen_info()
{
system("cls");
printf("**********修改各省信息:**********\n");
struct geshen_info info[100];
FILE *pf;
int i=0;
int length;
int choose;
char flag='n';
memset(info,0,sizeof(info));
pf=fopen("c:\\各省帐篷调出基本信息.txt","r");
if(!pf)
{
printf("打开信息库失败!\n");
Sleep(1000);
return;
}
while(!feof(pf))
{
fread(info[i],sizeof(struct geshen_info),1,pf);
i++;
}
length=i-1;
if(length==0)
{
printf("无信息:\n");
Sleep(1500);
return;
}
printf("共有%d条信息\n",length);
for(i=0;ilength;i++)
{
printf(" 省编号: %s 省名: %s\n 国家分配帐篷总数: %d\n 国家分配总金额: %10.3f\n 已调出帐篷数量: %d\n 已调出帐篷金额: %10.3f\n 统计日期: %s\n 统计员: %s\n ",
info[i].shen_number,info[i].shen_name,info[i].guojia_number,info[i].guojia_jine,info[i].yidiao_number,info[i].yidiao_jie,info[i].tongji_date,info[i].tongji_name);
}
fclose(pf);
FILE *changef;
changef=fopen("c:\\各省帐篷调出基本信息.txt","w");
while(flag=='n')
{
printf("请选择你要对那个信息进行修改:\n");
scanf("%d",choose);
printf("你要修改的是否为[y/n]");
printf(" 省编号: %s 省名: %s\n 国家分配帐篷总数: %d\n 国家分配总金额: %10.3f\n 已调出帐篷数量: %d\n 已调出帐篷金额: %10.3f\n 统计日期: %s\n 统计员: %s\n ",
info[choose-1].shen_number,info[choose-1].shen_name,info[choose-1].guojia_number,info[choose-1].guojia_jine,info[choose-1].yidiao_number,info[choose-1].yidiao_jie,info[choose-1].tongji_date,info[choose-1].tongji_name);
fflush(stdin);
flag=getchar();
}
printf("进行修改:\n");
printf("请输入省编号(三位):\n");
fflush(stdin);
fgets(info[choose-1].shen_number,5,stdin);
printf("请输入省份名称:\n");
fflush(stdin);
fgets(info[choose-1].shen_name,20,stdin);
printf("请输入国家分配帐篷总数:\n");
fscanf(stdin,"%d",info[choose-1].guojia_number);
printf("请输入国家分配总金额:\n");
fscanf(stdin,"%f",info[choose-1].guojia_jine);
printf("请输入已调出帐篷数量:\n");
fscanf(stdin,"%d",info[choose-1].yidiao_number);
printf("请输入已调出帐篷金额:\n");
fscanf(stdin,"%f",info[choose-1].yidiao_jie);
printf("请输入统计日期(年/月/日):\n");
fflush(stdin);
fgets(info[choose-1].tongji_date,11,stdin);
printf("请输入统计员:\n");
fflush(stdin);
fgets(info[choose-1].tongji_name,10,stdin);
printf("修改成功\n");
printf("对文件进行写入:\n");
for(i=0;ilength;i++)
{
fwrite(info[i],sizeof(struct geshen_info),1,changef);
}
fclose(changef);
}
void change_inc_zhangpeng_info()
{
system("cls");
printf("**********修改各省属企业信息:**********\n");
struct inc_zhangpeng_info info[100];
FILE *pf;
int length;
int i=0;
int choose;
char flag='n';
memset(info,0,sizeof(info));
pf=fopen("c:\\省属企业帐篷生产调出汇总基本信息.txt","r");
if(!pf)
{
printf("打开信息库失败!\n");
Sleep(1000);
return;
}
while(!feof(pf))
{
fread(info[i],sizeof(struct inc_zhangpeng_info),1,pf);
i++;
}
length=i-1;
if(length==0)
{
printf("无信息:\n");
Sleep(1500);
return;
}
printf("共有%d条信息\n",length);
for(i=0;ilength;i++)
{
printf(" 企业编号: %s 企业名称: %s\n 省分配帐篷总数: %d\n 已生产帐篷总数: %d\n 已生产帐篷金额: %10.3f 已调出帐篷数量: %d\n 已调出帐篷金额: %10.3f\n 统计日期: %s\n 统计员: %s\n ",
info[i].inc_number,info[i].inc_name,info[i].shen_number,info[i].inc_add_number,info[i].inc_add_jine,info[i].inc_diaochu_number,info[i].inc_diaochu_jine,info[i].tongji_date,info[i].tongji_name);
}
fclose(pf);
FILE *changef;
changef=fopen("c:\\省属企业帐篷生产调出汇总基本信息.txt","w");
while(flag=='n')
{
printf("请选择你要对那个信息进行修改:\n");
scanf("%d",choose);
printf("你要修改的是否为[y/n]");
printf(" 省名: %s 企业编号: %s 企业名称: %s\n 省分配帐篷总数: %d\n 已生产帐篷总数: %d\n 已生产帐篷金额: %10.3f 已调出帐篷数量: %d\n 已调出帐篷金额: %10.3f\n 统计日期: %s\n 统计员: %s\n ",
info[choose-1].shen_name,info[choose-1].inc_number,info[choose-1].inc_name,info[choose-1].shen_number,info[choose-1].inc_add_number,info[choose-1].inc_add_jine,info[choose-1].inc_diaochu_number,info[choose-1].inc_diaochu_jine,info[choose-1].tongji_date,info[choose-1].tongji_name);
fflush(stdin);
flag=getchar();
}
printf("进行修改:\n");
memset(info[choose-1].inc_name,0,30);
memset(info[choose-1].tongji_date,0,11);
memset(info[choose-1].tongji_name,0,10);
memset(info[choose-1].shen_name,0,20);
printf("请输入该企业所属省份:\n");
fflush(stdin);
printf("请输入企业编号\n");
fflush(stdin);
fgets(info[choose-1].inc_number,12,stdin);
printf("请输入企业名称\n");
fflush(stdin);
fgets(info[choose-1].inc_name,30,stdin);
printf("请输入省分配帐篷总数\n");
fscanf(stdin,"%d",info[choose-1].shen_number);
printf("请输入已生产帐篷数量\n");
fscanf(stdin,"%d",info[choose-1].inc_add_number);
printf("请输入已生产帐篷金额\n");
fscanf(stdin,"%f",info[choose-1].inc_add_jine);
printf("请输入已调出帐篷数量\n");
fscanf(stdin,"%d",info[choose-1].inc_diaochu_number);
printf("请输入已调出帐篷金额\n");
fscanf(stdin,"%f",info[choose-1].inc_diaochu_jine);
printf("请输入统计日期\n");
fflush(stdin);
fgets(info[choose-1].tongji_date,11,stdin);
printf("请输入统计员\n");
fflush(stdin);
fgets(info[choose-1].tongji_name,10,stdin);
printf("修改成功\n");
printf("对文件进行写入:\n");
for(i=0;ilength;i++)
{
fwrite(info[i],sizeof(struct geshen_info),1,changef);
}
fclose(changef);
}
下面的发布上来了,给我邮箱,我发给你
求c语言程序设计第三版和c语言程序设计实验与习题指导答案
c语言程序设计第三版指导答案
附录F 课后题参考答案
习 题 1
1.1 填空题
1.函数
2.主函数main();主函数main() 3.主函数main() 4.函数首部;函数体 5.{;}
6.顺序结构;选择结构;循环结构 7..c;.obj;.exe
1.2 思考题
1.答:结构化程序设计是指,为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构
2.答:算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:①用自然语言表示算法;②用流程图表示算法;③用伪代码表示算法;④用程序设计语言表示算法。
3.略 4.略 5.略 1.3 编程题 1.答:
#include "stdio.h" main()
{ float a=10, b=20, h=5, s; s=(a+b)*h/2;
printf("s=%f " , s ); }
2.答:
#include "stdio.h"
main()
{ printf("******************************"); printf("* hello world *"); printf("******************************"); }
习 题 2
2.1 单选题
DBDCA DCABB CA
2.2 填空题
1.2.000000
2.1;0.500000
3.9;2 4.6 5.100;d 6.(1)20
(2)0
(3)60 7.(1)10;6;4
(2)6;9;15
(3)3;60;83
8.55或 '7'
9.x=4;y=6;z=3;m=463
2.3 改错题(略)
习 题 3
3.1 单选题
BDABC ADCAC BBA
3.2 填空题
1.3 2.261 3.10
4.2, 1;互换a,b的值 5.6.6 6.003 7.7
8.5.0,4,c=3Enter
9.i=10,j=20Enter
10. (1)65 (2)65,A (3)3.14,123.46
(4)3.141600e+000,1.234560e+002 (5)8765.432100 (6)8.765432e+003
11.a=2b=5x=8.8y=76.34c1=65c2=97 12.%d/%d;%d/%d=%.2f\n
3.3 改错题(略) 3.4 编程题
1.答:
#include "stdio.h" main() {
int x,y;
scanf("%d%d",x,y); printf("\t\tx\ty\n");
printf("十进制数\t%d\t%d\n",x,y); printf("八进制数\t%o\t%o\n",x,y); printf("十六进制数\t%X\t%x\n",x,y); }
2.答:
#include "stdio.h" main() {
char ch;
printf("请输入一个大写英文字母"); scanf("%c",ch);
printf("大写英文字母是%c\n",ch); printf("它的前导字符是%c\n",ch-1); printf("它的后续字符是%c\n",ch+1); }
3.答:
#include "stdio.h" main() {
int x,a,b,c,y;
printf("请输入一个三位整数\n"); scanf("%d",x); a=x/100;
b=(x-a*100)/10; c=x%10;
y=c*100+b*10+a;
printf("反向输出该整数:%d\n",y); } }
4.答:
#include "stdio.h" main()
{ int hour;
double salary, salaryday;
scanf("%d,%lf", hour, salaryday );
salary=hour*salaryday- hour*salaryday*0.1;
printf("%8.2lf\n", salary); }
5.答:
#include "stdio.h" main() {
int a,b,c,t;
printf("请输入三个整数\n"); scanf("%d%d%d",a,b,c);
printf("交换前a=%d,b=%d,c=%d\n",a,b,c); t=a;a=c;c=b;b=t;
printf("交换后a=%d,b=%d,c=%d\n",a,b,c); }
习 题 4
4.1 单选题
BADDD ACBBB BA
4.2 填空题
1.1
2.(1)a0 || b0
(2)x0 x=10 (3)a==1.5 b==1.5 c==1.5
(4)pa || pb || pc
3.(1)0 (2)1 (3)1 (4)0 (5)1
4.c=1 5.-4 6.1 7.5, 0, 3 8.5 9.123
10.( cvb= ='y'||cvb= ='Y')(work=3||college=='y'|| college=='Y')age=35
4.3 改错题(略) 4.4 编程题
1.答
#include "stdio.h"
#include "math.h" main() {
double a,b,c,p,area;
scanf("%lf%lf%lf",a,b,c);
printf("三角形的三边为:%.llf,%.1lf,%.1lf\n",a,b,c); if (a+bca+cbb+ca) {p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面积为%.2lf\n",area); } else
printf("不能构成三角形\n"); }
2.答:
#include "stdio.h" main()
{ int x,y;
scanf("%d,%d",x,y); if(x*x+y*y1000)
printf("%d\n",(x*x+y*y)/100); else
printf("%d\n",x+y); }
3.答:
#include "stdio.h" #include "math.h" main()
{ double x,y;
scanf("%lf",x); if(x-2) y=x*x-sin(x); else if (x=2) y=pow(2,x)+x; else y=sqrt(x*x+x+1);
printf("x=%.2lf y=%.2lf\n",x,y); }
4.答:
#include "stdio.h" main( )
{ long ge,shi,qian,wan,x; scanf("%ld",x); wan=x/10000;
qian=x%10000/1000; shi=x%100/10;
ge=x%10;
if (ge==wanshi==qian) /*个位等于万位并且十位等于千位*/ printf("this number is a huiwen\n"); else
printf("this number is not a huiwen\n");
}
5.答:
#include "stdio.h" main()
{ float p,w,s,d,f;
scanf("%f,%,%f",p,s,w); if (s3000) d=0.15 else if( s=2000) d=0.1; else if(s=1000) d=0.08; else if(s=500) d=0.05; else if(s=250) d=0.02; else d=0 f=p*w*s*(1-d); printf("%f",f); }
6.答:
#include "stdio.h" main()
{ int year,money; char x;
printf("是否是本公司产品(y/n):"); scanf("%c",x);
if(x=='y'||x=='Y')
{printf("产品使用的年限:"); scanf("%d",year);
if(year=1) money=0;
else if(year8) money=50; else money=100;
printf("产品保修额是:%d\n",money);
}
else
{ money=200;
printf("不是本公司产品,产品保修额是:%d\n",money); } }
7.答:
#include "stdio.h" main()
{ int money,num1,num2;
printf("请输入取款额(≤2000):"); scanf("%d",money);
if(money2000) printf("请输入取款额数≤2000!\n"); else if(money%50==0) { num1=money/100; num2=(money-num1*100)/50; printf("需支付100元:%d张\n",num1); printf("需支付50元:%d张\n",num2); } else printf("输入钱数必须是50的倍数!\n"); }
习 题 5
5.1 单选题
CDABA ABDDB DBCB
5.2 填空题
1.2 0 2.333
3.(1)i10 或 i=9 (2)j%3!=0
4.(1)flag*(float)k/(k+1) 或1.0*flag*k/(k+1) (2)flag=-flag 5.(1)max=x
(2)x!=-1 (3)scanf("%d", x)
6.(1)x=9或x10
(2)y=9-x
5.3 改错题(略) 5.4 编程题
1.答:
(1)for循环,其他略
#include "stdio.h"
main()
{ int i,s=0;
for(i=1;i=100;i++) s+=i*i;
printf("%d\n",s); }
(2)for循环,其他略
#include "stdio.h" main()
{ int i=1,p=1; double s=1; do {
s+=1.0/p; p*=++i;
}while(1.0/p1e-6); printf("%lf",s); }
2.答:
#include "stdio.h" main()
{ int m,n,t,a,b;
scanf("%d,%d" ,m,n) if (mn)
{ t=m m=n n=t } a=m; b=n; t=m%n while(t)
{ m=n n=t t=m%n;} printf("%d",n); }
3.答:
#include "stdio.h" main()
{ int x,y,s=1;
scanf("%d,%d",x,y) for( y0 y--)s*=x
printf("%d,%d,%d\n ",s%10,s/10%10,s/100%10); }
4.答:
#include "stdio.h" main()
{ int x,y,z;
for( x=1 x20 x++) for( y=1 y33 y++) { z=100-x-y
if ((z%3)==0 (5*x+3*y+z/3)==100) printf("x=%d,y=%d,z=%d\n",x,y,z) } }
5.答: (a)
#include "stdio.h" main()
{ int j,k
for( j=1 j=4 j++)
{ for(k=1;k=4-j;k++)printf(" "); printf("****") printf("\n") } }
(b)
#include "stdio.h" main()
{ int j,k
for( j=1 j=4 j++)
{for(k=1;k=4-j;k++)printf(" "); for(k=1 k=2*j-1 k++) printf("*") printf("\n") } }
6.答:
程序分析:利用for循环控制在100~999之间,对每个数分解出个位、十位、百位。
#include stdio.h main() { int i,j,k,n; printf("water flower'number is:"); for(n=100;n1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(n==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n"); }
7.答:
#include stdio.h main() { int x; for(x=1000;x=3;x--) if(x%3==1x%5==2x%7==3) {
printf("该校的学生人数是:%d人\n",x); break; } }
8.答:
#include stdio.h main() { int x=12,i=1; while(1)
{ if((x+20+i)==2*(x+i)) break; i++; } printf("小明母亲在%d年后比小明的年龄大一倍\n",i); printf("那时小明年龄是:%d岁,小明母亲年龄是:%d岁\n",x+i,x+20+i); }
习 题 6
6.1 单选题
DBCCB BDC
C语言程序设计教程(第3版)
278
6.2 填空题
1.c 2.60 3.1000 10 4.16
6.3 编程题
1.答:
#include "stdio.h" #include "math.h"
#define F(a) a*a+ sqrt(3*a*a+2*a+1) main()
{ float x, f;
scanf("%f", x );
f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x) printf("%f\n", f); }
习 题 7
7.1 单选题
BCADA CCCDA BCBDB
7.2 填空题
1.(1)2 3 4 5 (2)10010 (3)QuickC
(4)10000 01000 00100 00010 00001 (5)Language
(6)Language Programming 2.(1)j+=2 (2)a[i]a[j] 3.(1)i=1 (2)x[i-1]
7.3 改错题(略) 7.4 编程题
1.答:
#define N 10
#include "stdio.h" main()
{ int a[N]={1,2,3,4,5,6,7,8,9,10,osum=0, qsum=0,j; for(j=0;j10;j++)
if( j%2) qsum+=a[j];
else osum+=a[j];
printf("osum=%d,qsum=%d\n", osum,qsum); }
2.答:
#define N 10
#include "stdio.h" main()
{ int a[N]={10,20,30,40,50,60,70,80,90}, j, k, x; scanf("%d",x); for(j=0;jN;j++)
if (xa[j]) break; if(j==N) a[N-1]=x; else
{for(k=N-1; kj; k--) a[k]=a[k-1]; a[j]=x;}
for(j=0;jN;j++)
printf("%d ",a[j]); }
3.答:
#define M 3
#include "stdio.h" main()
{ int a[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;; for( j=0;jM;j++)
for(k=0;kM;k++) if (a[j][k]!=a[k][j]) { flag=0; break;} if (flag) printf("ok"); else printf("NO"); }
4.答:
#include "stdio.h" #include "string.h" main()
{ char c1[10],c2[10],j; gets(c1); gets(c2);
for(j=0; (c1[j]==c2[j]) c1[j] c2[j]; j++); if (c1[j]c2[j]) printf("%d\n",1); if (c1[j]c2[j]) printf("%d\n",-1); if (c1[j]==c2[j]) printf("%d\n",0); }
5.答:
#include "stdio.h" #include "string.h" #define M 3 #define N 80 main()
{ char a[M][N],j,k,n[5]={0}; for(j=0;jM;j++) gets(a[j]);
for(j=0;jM;j++)
for(k=0;a[j][k];k++)
if( a[j][k]='A' a[j][k]='Z') n[0]++;
else if (a[j][k]='a' a[j][k]='z') n[1]++; else if (a[j][k]='0' a[j][k]='9') n[2]++; else if (a[j][k]==' ' ) n[3]++; else n[4]++;
for(j=0;j5;j++) printf("%4d", n[j]); }
习 题 8
8.1 单选题
DBDAC BACCC
8.2 填空题
1.(1)2, 1 (2)10#30# (3)FOUR, P (4)60
2.(1)49
(2)2
(3)2
(4)
(5)
8.3 改错题(略) 8.4 编程题
1.答:
#include "stdio.h"
main()
{ int n1,n2,n3,t; int *p1,*p2,*p3;
printf("please input 3 number:n1,n2,n3:"); scanf("%d,%d,%d",n1,n2,n3); p1=n1;
p2=n2; p3=n3;
if(*p1* p2) { t=*p1;*p1=*p2;*p2=t;}
if(*p1*p3) { t=*p1;*p1=*p3;*p3=t;} if(*p2*p3) { t=*p2;*p2=*p3;*p3=t;}
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); }
2.答:
#include "stdio.h" #define N 3 main()
{ int a[N],*p=a; for(;p-aN; p++) scanf("%d",p); p=a+N-1;
for(;p-a=0; p--) printf("%d ",*p); }
3.答:
#include "stdio.h" main()
{ int a[10];
int j,minl=0,maxl=0; for(j=0;j10;j++)
scanf("%d", a+j); for(j=0;j10;j++)
{ if(a[maxl]*(a+j)) maxl=j; if(a[minl]*(a+j)) minl=j; }
j=a[0]; a[0]=a[minl];a[minl]=j; j=a[9];a[9]=a[maxl];a[maxl]=j; for(j=0;j10;j++) printf("%d ", *(a+j)); }
4.答:
输入阵列如下: 1 2 3 4 5 6 7 8 9 10 11 12 输出阵列如下:
12 11 10 9 8 7 6 5 4 3 2 1
#define M 3
#define N 4
#include "stdio.h" main()
{ int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=a[0][0],t; for(k=0,j=M*N-1;kj;k++,j--)
{ t=*(p+k); *(p+k)=*(p+j); *(p+j)=t;} for (k=0 kM k++) { for(j=0 jN j++)
printf("%4d ",a[k][j]); printf("\n");
} }
5.答:
#include "stdio.h" main() {
int len;
char str[20],*p=str;
printf("please input a string:\n"); scanf("%s",str); len=0;
while(*p!='\0') {
len++; p++; }
printf("the string has %d characters.\n",len); }
6.答:
#include "string.h" #include "stdio.h" main() {
char *str1[5],ch[5][20],k,t,j,*c; void sort(char **); for(k=0;k5;k++) {str1[k]=ch[k]; gets(str1[k]);} for(k=0;k7;k++)
{ t=k;
for(j=k+1;j5;j++) if(strcmp(*(str1+t),*(str1+j))0) t=j; c=*(str1+t);
*(str1+t)=*(str1+k) *(str1+k)=c }
for(k=0;k5;k++) puts(str1[k]); }
习 题 9
9.1 单选题
CBBAD DBCCD DCABC BCCBA DCDAB
9.2 填空题
1.120 2.x 3.3,2,2,3 4.fac /i 5.8,17 6.9 7.1.0/(i*i) 8.
fun-in:30,20,10 fun-end:1015,35,1050 10,20,30 9.012345 10.93636 11.(1)r+b[k] (2)*x
12.7 5 3 1 9 13.15
14.(1)*x (2)t 15.(1)'\0' (2)n++ 16.024
9.3 改错题(略) 9.4 编程题
1.答:
void zhuan( )
{ char ch;
while((ch=getchar())!='\n')
{ if(ch='a' ch='z') ch=ch-32; putchar(ch); } }
2.答:
double expp(int n) { int k, fac=1; double sum=1;
for(k=1; k=n; k++) { fac*=k;
sum+=1.0/fac }
return(sum); }
3.答:
int xy3( int x, int y)
{ int k, num=1;
for(k=1;k=y k++) num*=x
num=num%1000 return num }
4.答:
int age( int n) { int c;
if(n==1) c=10
else c=age(n-1)+2 return c }
5.答:
#include "stdio.h"
main()
{ int a,b,c,d;
void fun(int a,int b,int *c, int *d); scanf("%d%d",a,b); fun(a,b,c,d);
printf("%d %d",c,d);
}
void fun(int a,int b,int *c, int *d) { if (b)
{ *c=a/b; *d=a%b;} }
6.答:
#include "stdio.h"
main(int argc,char *argv[]) { int k;
printf("argc=%d\n",argc); for (k=1;kargc; k++) printf("%s\n",argv[k]); }
习 题 10
10.1 单选题
CDBBB BBBAD CCBDC
10.2 填空题
1.所有结构体成员所占存储空间的总和 2.与占用存储空间最大的那个成员相等
附录F 课后题参考答案
285
3.(1)struct satype (2)3 (3)sa.a (4)9 (5)psa=sa 4.80 5.struct node 6.0
10.3 编程题
1.答:
#include "stdio.h"
struct student {
long num;
char name[20]; char sex; float score; }; main()
{ struct student s[20], temp; int j,k, man=0, woman=0;
float summan=0,sumwoman=0, aveman, avewoman; for(k=0; k20; k++)
{ scanf("%ld %s %c%f",s[k].num,s[k].name,s[k].sex,s[k].score); if(s[k].sex=='m')
{ summan+=s[k].score; man++;} else
{ sumwoman+=s[k].score;woman++ } }
aveman=summan/man;
avewoman=sumwoman/woman;
printf("%d\t%f\t%d\t%f\n",man,aveman,woman,avewoman); for(k=0; k19; k++)
for(j=0;j20-k;j++)
if(s[j].scores[j+1].score)
{ temp=s[j];s[j]=s[j+1];s[j+1]=temp;} printf("the sorted numbers:\n"); for(k=0;k20;k++)
printf("%ld\t%s\t%c\t%5.1f\n",s[k].num,s[k].name,s[k].sex,s[k].score); }
习 题 11
11.1 单选题
BADD
11.2 填空题
1.3d3d330 2.(1)28
(2)20 (3)0 (4)--9
3.(1)251
(2)42
(3)209
(4)–295 (5)848
习 题 12
12.1 单选题
BCDCA ADA
12.2 填空题
1.rewind(文件指针) 2."d1.dat","rb" 3.stdin
4.文本文件;二进制文件 5.(1)"w"
(2)str[i]--32
(3)"r"
6.fopen 7.Hello 8.(1)"r"
(2)fgetc(fp)
(3)time++
C语言程序设计实验与习题指导课后程序设计答案
P18
(1)
#includestdio.h int main(void) { intcelsius,fahr; fahr=150; celsius=5*fahr/9-5*32/9; printf("fahr=%d,celsius=%d\n",fahr,celsius); return 0; }
(2)
#includestdio.h int main(void) { intcelsius,fahr; celsius=26; fahr=9*celsius/5+32; printf("celsius=%d,fahr=%d\n",celsius,fahr); return 0; }
(3)
#includestdio.h int main(void) { intaverage,math,eng,comp; math=87; eng=72; comp=93; average=(math+eng+comp)/3; printf("math=%d,eng=%d,comp=%d,average=%d\n",math,eng,comp,average); return 0; }
(4)
#includestdio.h int main(void) { intn,a,b,c; n=152
c=n%10;
b=(n/10)%10; a=n/100;
printf("整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",n,c,b,a); return 0;
}
P27
(1)
#includestdio.h #includemath.h int main(void) { intcelsius,fahr; printf("Enter celsius:"); scanf("%d",celsius); fahr=9*celsius/5+32; printf("fahr%d\n",fahr); return 0; }
(2)
#includestdio.h #includemath.h int main(void) { intmoney,year; doublerate,interest; printf("Enter money,year,rate:"); scanf("%d%d%lf",money,year,rate); interest=money*pow(1+rate,year)-money; printf("interest=%.2f\n",interest); return 0; }
(3)
#includestdio.h #includemath.h int main(void) { doublex,y; printf("Enter x:"); scanf("%lf",x);
if(x0){ y=pow(x+1,2)+2*x+1/x; } else{ y=sqrt(x); }
printf("y=f(%f)=%.2f\n",x,y); return 0;
}
(4)
#includestdio.h int main(void) { intx,y; printf("Enter num1:"); scanf("%d",x); printf("Enter num2:"); scanf("%d",y); printf("%d+%d=%d\n",x,y,x+y); printf("%d-%d=%d\n",x,y,x-y); printf("%d*%d=%d\n",x,y,x*y); printf("%d/%d=%d\n",x,y,x/y); printf("%d%%%d=%d\n",x,y,x%y); return 0; }
10的阶乘
#includestdio.h int main(void) { inti,n,product; printf("Enter n:"); scanf("%d",n); product=1; for(i=1;i=n;i++){ product=product*i; } printf("product=%d\n",product); return 0; }