大学C语言实用教程课后编程答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码如下:
#include<stdio.h>
#define N 10
void main()
{
char a[N],*p=a;
int i,j;
printf("请输入带空格的字符:");
gets(p);
for(i=0;i<N;i++) //删除空格
{
if(p[i]==32) //先判断该字符是否为空格,如果该字符是空格,则将该字符后面的字符统一向前移动一个位置。直到所有空格被删除为止。
}
printf("s3=%d\t",s3);
}
第三题:编制程序统计一个字符串中各种小写字母的个数
代码如下:
# include<stdio.h>
#define m 80
void main()
{
char a[m],b;
int i,j=0;
printf("请输入字符串:");
gets(a);
for(i=0;i<m;i++)
{
b=p[0];
for(j=1;j<N;j++)
p[j-1]=p[j];
p[N-1]=b;
}
printf("\n后移后的数为:");
for(i=0;i<N;i++)
{
printf("%5d",*(p+i));
}
printf("\n");*/
/*不改变数组,只是将数按不同顺序输出*/
printf("\n后移后的数为:");
int i,k;
printf("请输入字符串:");
gets(p);
k=strlen(p);
for(i=0;i<k/2;i++) //反置字符串
{
JH(*(p+i),*(p+k-i-1));
}
printf("反置后的字符串为:");
puts(p);
}
第七章:
第一题:编写自定义函数,要求在主函数中输入一个整数,子函数判断该整数是否为素数,若是素数,函数返回1,否则返回0.
void main()
{
int a[5][5],i,j,s1,s2,s3;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
a[i][j]=i*j;
printf("%d\t",a[i][j]);
}
printf("\n");
}
printf("\n");
s1=0;
s2=0;
s3=0;
for(i=0;i<5;i++)
if(a==0)
break;
}while(i<n);
if(!a==0)
printf("%3d",n);
}
}
第五题:编制程序用辗转相除法求整数A和B的最大公约数。
代码如下:
# include<stdio.h>
void main()
{
int a,b,r,t;
scanf("%d%d",&a,&b);
a<=b?t=a,a=b,b=t:a=a,b=b;
min<c?min:min=c;
max>c?max:max=c;
}
printf("min=%d,max=%d\n",min,max);
}
第三题:编程计算1!+2!+3!+…+20!
代码如下:
# include<stdio.h>
void main()
{
int i=0;
double a,b;
a=1,b=0;
代码如下:
#include<stdio.h>
void main()
{
int a,panduan(int a);
printf("请输入一个数:\n");
scanf("%d",&a);
if(panduan(a))
printf("是素数\n");
else
printf("非素数\n");
}
int panduan(int a)
if(max<p[i][j])
{
max=p[i][j];
*a=i;
*b=j;
}
}
第三题:编写程序,要求在主函数中输入一个字符串,子函数将该字符串中的大写字母改为小写字母,小写字母改为大写字母。其他字符不变,并将转换后的字符串返回主程序。
代码如下:
主函数代码:
#include<stdio.h>
#define N 50
代码如下:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define N 10
void main()
{
int a[N],m,b,i,j,*p=a;
printf("请输入后移的个数:");
scanf("%d",&m);
b=m;
srand(time(NULL));
do
{i++;
a=a*i;
b=b+a;
}while(i<20);
printf("%f\n",b);
}
第四题:编程打印出100以内所有素数。
代码如下:
#include <stdio.h>
void main()
{
int i,n,a;
for(n=2;n<=100;n++)
{i=2;
do
{
a=n%i;
i++;
{"wangwu","nanjing","52563489701"},{"zhaoliu","beijing","35253648957"}};
printf("请输入要查找的人姓名:");
gets(a);
for(i=0;i<5;i++)
{
if(!strcmp(st[i].name,a))
printf("姓名:%10s,地址:%10s,电话:%12s\n",st[i].name,st[i].ad,st[i].phonenumber),j++;
{
s1+=a[i][i];
}
printf("s1=%d\t",s1);
for(i=0;i<5;i++)
{
s2+=a[i][4-i];
}
printf("s2=%d\t",s2);
for(i=0;i<5;i++)
{
s3=s3+a[i][0]+a[i][4];
}
for(j=0;j<5;j++)
{
s3=s3+a[0][j]+a[4][j];
scanf("%d",&n);
srand(time(NULL));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=rand()%101;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
for(;m<N;m++) //先输出数组第m个到最后一个数
{
printf("%5d",*(p+m));
}
for(i=0;i<b;i++) //后输出数组第一个到第m-1个数
{
printf("%5d",*(p+i));
}
printf("\n");
}
第三题:编一个程序,用指针操作将从键盘输入的一段英文句子中的所有空格删除。
r=a%b;
if(r==0)
printf("最大公约数=%d",b);
else
{
do
{
a=b;
b=r;
r=a%b;
}while(r!=0);
printf("最大公约数=%d",b);
}
}
第五章:
第一题:编程计算矩阵a[5][5]主对角线元素之和,此对角线元素之和和周边元素之和。
代码如下:
#include<stdio.h>
{b=a[i];
if(b>='a'&&b<='z')
j++;
}
printf("输入的字符中小写字母个数为:%d个\n",j);
}
第六章:
第一题:编一个程序,用指针将一个一维数组中的n个整数作如下处理:顺序将前面各数后移m个位置,是最后面的m个数变成最前面的m个数。如:1,3,5,7,9,顺序后移两个位置后变为7,9,1,3,5.
代码如下:
主函数的代码
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include"2.h"
void main()
{
int a[10][10],i,j,m,n;
printf("请输入行数\n");
scanf("%d",&m);
printf("请输入列数\n");
#include "3.h"
void main()
{
char a[N];
printf("请输入字符串:\n");
gets(a);
zhuanhuan(a);
printf("改变后的字符串为:\n");
puts(a);
}
.h文件中的代码:
#include<ctype.h>
void zhuanhuan(char a[])
for(i=0;i<N;i++)
{
a[i]=rand()%101;
}
printf("后移前的数为:");
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
}
/*每一趟先将第一个数标记,wk.baidu.com
后从第二个数开始将每一个数前移一个位,
然后将标记的数放到最后一位。
for(i=0;i<m;i++)
{
int i;
for(i=0;i<N;i++)
{
if(a[i]>='a'&&a[i]<='z')
a[i]=toupper(a[i]);
else if(a[i]>='A'&&a[i]<='Z')
a[i]=tolower(a[i]);
else if(a[i]==0)
break;
}
}
第四题:用递归的方法求1+2+3+4+…+n的和。
}
if(j==0)
printf("查无此人\n");
}
第二题:用结构数组存放一个数据库,含10个人的考试成绩,包括姓名,数学,计算机,英语,体育和总分,其中,总分由程序自动计算。将总分按从低到高排序。
代码如下:
#include<stdio.h>
#define cj(x,y) {t=x;x=y;y=t;}
printf("删除空格后的字符为:");
puts(p);
}
第四题:编一个程序,用指针操作将一个字符串反序存放。
代码如下:
#include<stdio.h>
#include<string.h>
#define JH(x,y) t=x;x=y;y=t;
#define N 10
void main()
{
char a[N],*p=a,t;
{
if(n==0)
return 0;
else
return (n+qiuhe(n-1));
}
第八章:
第一题:用结构数组建立含5人的通讯录,包括姓名,地址,电话号码,能根据键盘输入的姓名查找并输出改姓名及对应的电话号码:
代码如下:
#include <stdio.h>
#include<string.h>
struct student
第四章:
第一题:从键盘输入100个整数,从中找出最大数和最小数
代码如下:
# include<stdio.h>
void main()
{
int i,a,b,c,min,max;
scanf("%d%d",&a,&b);
min=a>b?b:a;
max=a>b?a:b;
for(i=1;i<=98;i++)
{
scanf("%d",&c);
{
int i,j=0;
if(a==2)
return 1;
else
{
for(i=2;i<a;i++)
{
if(a%i==0)
j++;
}
if(j==0)
return 1;
else
return 0;
}
}
第二题:请编制自定义函数,,函数的功能是求一个int型二维数组最大元素及其行下标和列下标(要求二维数组名作为实参,对应的虚参用行指针),主函数的功能是输入二维数组元素的值,接受子函数传递过来的最大元素及其行下标和列下标。
{char name[10];
char ad[10];
char phonenumber[12];
};
void main()
{
int i,j=0;
char a[10];
struct student st[5]={{"liming","shanxi","12546785482"},{"zhangsan","jiangsu","72253648795"},{"lisi","luzhou","25635487962"},
for(j=i;p[j];j++)
{
p[j]=p[j+1];
if(p[j+1]!=32) //为防止连续的空格
i=i-1;
}
}
/*for(i=j=0;p[i];i++) //从第一个开始检测是否为空格,将所有非空格字符保留下来
{
if(p[i]!=32)
p[j++]=p[i];
}
p[j]='\0';
*/
代码如下:
#include<stdio.h>
void main()
{
int n;
double s,qiuhe(int n);
printf("请输入一个数:\n");
scanf("%d",&n);
s=qiuhe(n);
printf("该数累加之和为:\n%f\n",s);
}
double qiuhe(int n)
}
qz(a,&m,&n);
printf("%2d行%2d列%5d",m+1,n+1,a[m][n]);
}
.h文件中的代码:
void qz(int (*p)[10],int *a,int *b)
{
int i,j,max;
max=p[0][0];
for(i=0;i<10;i++)
for(j=0;j<10;j++)
#define N 10
相关文档
最新文档