c语言程序设计教程吴国栋版答案在书本后面的二维码扫码可以找到。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
(第一题)#include <stdioh>
void main()
{
int gy(int m, int n);
int x,y,max, min;
printf("请输入两个大于0的正整数,以空格或者回车间隔:\n");
scanf("%d%d",&x,&y);
while(x<1 || y<1)
{
printf("输入数据不正确,请重新输入。\n");
printf("请输入两个大于0的正整数,以空格或者回车间隔:\n");
scanf("%d%d",&x,&y);
}
max=gy(x,y);
min=xy/max;
printf("%d与%d的最大公约数是:%d,最小公倍数是:%d\n",x,y,max,min);
}
int gy(int m, int n)
{
int max, t;
while(m%n != 0) // while(m%n)
{
t=n; n=m%n; m=t;
}
max=n;
return max;
}
第二题#include <stdioh>
#include <mathh>
void main()
{
void root(double a, double b, double c);
double a, b, c;
printf("请输入一元二次方程的系数,用空格或者回车间隔:\n");
scanf("%lf%lf%lf",&a,&b,&c);
root(a,b,c);
}
void root(double a, double b, double c)
{
double disc, x1, x2, real , imag;
disc = bb-4ac;
if(disc>0)
{
x1 = (-b+sqrt(disc))/(2a);
x2 = (-b-sqrt(disc))/(2a);
printf("方程有两个实根,分别是:%f 与 %f\n", x1, x2);
}
else if(disc==0)
{
x1 = (-b)/(2a);
printf("方程有一个实根,它是:%f\n ", x1);
}
else
{
real=(-b)/(2a);
imag=sqrt(-disc)/(2a);
printf("方程有两个虚根,分别是:%f+%fi, %f-%fi\n", real,imag,real,imag);
}
}
测试1:请输入一元二次方程的系数,用空格或者回车间隔:1 2 1
方程有一个实根,它是:-1000000
测试2:请输入一元二次方程的系数,用空格或者回车间隔:1 6 5
方程有两个实根,分别是:-1000000 与 -5000000
测试3:请输入一元二次方程的系数,用空格或者回车间隔:1 1 1
方程有两个虚根,分别是:-0500000+0866025i, -0500000-0866025i
第三题#include <stdioh>
#include <mathh>
void main()
{
int isprime(int n);
int n;
scanf("%d",&n);
while(n<2)
{
printf("Please reinput(n>=2):");
scanf("%d",&n);
}
if(isprime(n))
printf("%d是素数。\n",n);
else
printf("%d不是素数。\n",n);
}
int isprime(int n)
{
int i,k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
第四题#include <stdioh>
#include <mathh>
void main()
{
void printA(int a[3][3]);
void reverse(int a[3][3]); //转置函数的声明
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("原二维数组:\n");
printA(a);
reverse(a); //函数转置
printf("转置后的数组:\n");
printA(a);
}
void printA(int a[3][3])
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6d",a[i][j]);
}
printf("\n");
}
}
void reverse(int a[3][3]) //函数转置的定义
{
int i,j,t;
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}
第五题#include <stdioh>
#include <stringh>
void main()
{
char str[30];
void fanxu(char p);
printf("请输入一个字符串:");
gets(str);
printf("进行反序\n");
fanxu(str);
printf("反序后的字符串:");
puts(str);
}
void fanxu(char p)
{
int len=strlen(p);
char q,c;
q=p+len-1; //字符串最后一个字符位置
for(;p<q;p++,q--)
{
c=p; p=q; q=c;
}
}
第六题#include <stdioh>
#include <stringh>
void main()
{
char str1[60],str2[30];
void str_copy(char p, char q);
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
str_copy(str1, str2);
printf("连接后的字符串:");
puts(str1);
}
void str_copy(char p, char q)
{
for(;p!='\0';p++);
for(;q!='\0';p++,q++)
{
p=q;
}
p='\0';
}
(0808)#include <stdioh>
#include <stringh>
void main()
{
char str[80];
void insert(char str[]); //插入空格的函数
printf("请输入一个字符串:");
gets(str);
insert(str); //插入空格
puts(str); //输出字符串
}
void insert(char str[])
{
int len, i;
len=strlen(str);
for(i=len; i>0; i--) // 设置空格
{
str[2i]=str[i];
str[2i-1]=' ';
}
}
(0809)#include <stdioh>
int letter; //字母个数
int digit; //数字个数
int space; //空格个数
int others; //其它字母个数
void main()
{
void count(char str[]); //统计个数的函数的声明
char s[81];
printf("请输入一个字符串:");
gets(s);
letter=0; digit=0;
space=0; others=0;
count(s);
printf("字符串中共有 %d 个字母,%d 个数字,%d 个空格,%d个其它字母。\n",letter,digit,space,others);
}
void count(char str[]) //统计个数的函数的定义
{
int i;
char c;
for(i=0; str[i]!='\0';i++)
{
c=str[i];
if(c>='a' && c<='z' || c>='A' && c<='Z')
{ letter++; }
else if(c>='0' && c<='9')
{ digit++; }
else if(c==' ')
{ space++; }
else
{ others++; }
}
}
(0810)#include <stdioh>
#include <stringh>
void main()
{
int i;
char line[81];
int alphabetic(char c); //判断一个字符是空格还是其它字母
int longest(char str[]);//寻找最长单词的起始位置
printf("请输入一行字符串:\n");
gets(line);
printf("最长的字符串是:");
for(i=longest(line); alphabetic(line[i]); i++)
{ printf("%c",line[i]);}
printf("\n");
}
int alphabetic(char c) //如果为空格返回0,其它字母返回1
{
if(c!=' ')
return 1;
else
return 0;
}
int longest(char str[])
{
int len=0; // 记录每一个单词的长度
int length=0; // 记录最长单词的长度
int flag=1; // 其值为0时表示当前位置处于字符串中,为1时表示当前位置为空格
int place=0; // 记录最长字符串(单词)的起始位置
int point; // 每个字符串的起始位置
for(int i=0; i<=strlen(str); i++)
{
if(alphabetic(str[i])) //如果当前位置为非空格
{
if(flag) //如果前一字符为空格
{
point = i; // 设置当前单词的起始位置
flag = 0; // flag设为0,表示处于单词中
}
else //如果前一字符为非空格
{ len++; } // 单词的长度加1
}
else //当前位置为空格
{
flag = 1; //flag设为1,表示当前位置为空格
if(len >= length) //如果最近单词的长度大于最长长度
{
length = len;
place = point; //设置最长单词的起始位置
len = 0; //len归0,重新开始计算单词的长度
}
}
}
return place;
}
(0811)#include <stdioh>
#include <stringh>
void main()
{
void inputNum(int a[], int n);
void outputNum(int a[], int n);
void bubble(int a[], int n);
int a[11], n;
printf("请输入你要排序的数的个数:");
scanf("%d",&n);
inputNum(a,n);
outputNum(a,n);
bubble(a,n);
printf("从小到大排序为:\n");
outputNum(a,n);
}
void inputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
}
void outputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
printf("%6d",a[i]);
}
printf("\n");
}
void bubble(int a[], int n)
{
int i,j,t;
for(i=1;i<=n-1;i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
}
}
}
(0813)#include <stdioh>
void main()
{
double lrd(int, double);
double x;
int n;
printf("请输入n阶勒让德多项式的阶数:\n");
scanf("%d",&n);
printf("请输入x的值:\n");
scanf("%lf",&x);
printf("参数为%f 的 %d 阶勒让德多项式的值为 %f\n",x,n,lrd(n,x));
}
double lrd(int n, double x)
{
if(n==0)
return 1;
else if(n==1)
return x;
else
return ((2n-1)x - lrd(n-1,x) -(n-1)lrd(n-2,x))/n;
}
/
测试1:请输入n阶勒让德多项式的阶数:0请输入x的值:9999参数为99990000 的 0 阶勒让德多项式的值为 1000000
测试2:请输入n阶勒让德多项式的阶数:1请输入x的值:9999
参数为99990000 的 1 阶勒让德多项式的值为 99990000
测试3:请输入n阶勒让德多项式的阶数:2
请输入x的值:9999 参数为99990000 的 2 阶勒让德多项式的值为 99490000
测试4:请输入n阶勒让德多项式的阶数:10
请输入x的值:11
参数为1100000 的 10 阶勒让德多项式的值为 0888677
(0817)#include <stdioh>
void main()
{
int num;
void convert(int num); // 转换为字符串的函数的声明
printf("请输入一个整数:\n");
scanf("%d",&num);
printf("转换成字符串:");
if(num<0)
{
putchar('-');
num = -num;
}
convert(num);
printf("\n");
}
void convert(int n)
{
int i;
if((i = (n/10)) != 0)
{
convert(i);
}
putchar(n%10 + '0');
}
(0818)#include <stdioh>
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int year,month,day;
int days;
int count(int year,int month, int day);
int leap(int y);
printf("请输入年份:");
scanf("%d",&year);
while(year<=0)
{
printf("年份不能为负,请重新输入:");
scanf("%d",&year);;
}
if(leap(year)) //如果为闰年,2月份的天数为29
{ d[2]=29; }
printf("输入月份:");
scanf("%d",&month);
while(month<1 || month>12)
{
printf("月份在1月和12月之间,你的输入有误,请重新输入:");
scanf("%d",&month);
}
printf("输入日数:");
scanf("%d",&day);;
while(day<1 || day >d[month])
{
printf("日数应在1和%d之间,请重新输入:",d[month]);
scanf("%d",&day);
}
days=count(year,month,day);
printf("%d年%d月%d日是该年的第%d天\n",year,month,day,days);
}
int leap(int y)
{
if(y%4==0 && y%100!=0 || y%400==0)
return 1;
else
return 0;
}
int count(int year,int month, int day)
{
int i,days=0;
for(i=1; i<month; i++)
{ days += d[i]; }
days+=day;
return days;
}
(08050)#include <stdioh>
#include <stringh>
void main()
{
char str[30];
void fanxu(char str[]);
printf("请输入一个字符串:");
gets(str);
printf("进行反序\n");
fanxu(str);
printf("反序后的字符串:");
puts(str);
}
void fanxu(char str[])
{
int len=strlen(str);
int i,j;
char c;
i=0; j=len-1;//i,j分别存储第一个字符和最后一个字符的下标
for(;i<j; i++,j--)
{
c=str[i]; str[i]=str[j]; str[j]=c;
}
}
(08051)#include <stdioh>
#include <stringh>
void main()
{
char str[30];
void fanxu(char s[]);
printf("请输入一个字符串:");
gets(str);
printf("进行反序\n");
fanxu(str);
printf("反序后的字符串:");
puts(str);
}
void fanxu(char s[])
{
int len=strlen(s);
int i;
char c;
for(i=0;i<=len/2;i++)
{
c=s[i];
s[i]=s[len-i-1];
s[len-i-1]=c;
}
}
(08061)#include <stdioh>
#include <stringh>
void main()
{
char str1[60],str2[30];
void str_copy(char s1[], char s2[]);
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
str_copy(str1, str2);
printf("连接后的字符串:");
puts(str1);
}
void str_copy(char s1[], char s2[])
{
int i,j;
for(i=0;s1[i];i++); // s1[i]!='\0'
for(j=0;s1[i]=s2[j];i++,j++);
// (s1[i]=s2[j])!='\0'
}
(08110)#include <stdioh>
#include <stringh>
void main()
{
void inputNum(char a[], char n);
void outputNum(char a[], char n);
void bubble(char a[], char n);
char a[11], n;
printf("请输入你要排序的数的个数:");
scanf("%d",&n);
inputNum(a,n);
outputNum(a,n);
bubble(a,n);
printf("从小到大排序为:\n");
outputNum(a,n);
}
void inputNum(char a[], char n)
{
char i;
printf("请连续输入%d个字符:",n);
fflush(stdin); //一般在输入字符或者字符串之前要清空输入缓冲区
for(i=1;i<=n;i++)
{
scanf("%c",&a[i]);
}
}
void outputNum(char a[], char n)
{
char i;
for(i=1;i<=n;i++)
{
printf("%2c",a[i]);
}
printf("\n");
}
void bubble(char a[], char n)
{
char i,j,t;
for(i=1;i<=n-1;i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
}
}
}
(08112)#include <iostreamh>
#include <iomaniph>
void main()
{
void inputNum(int a[], int n);
void outputNum(int a[], int n);
void bubble(int a[], int n);
int a[11], n;
cout<<"请输入你要排序的数的个数:";
cin>>n;
while(n<1 || n>10)
{
cout<<"请重新输入,(1<=n<=10):";
cin>>n;
}
inputNum(a,n);
outputNum(a,n);
bubble(a,n);
cout<<"从小到大排序为:\n";
outputNum(a,n);
}
void inputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
}
void outputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
cout<<setw(6)<<a[i];
}
cout<<endl;
}
void bubble(int a[], int n)
{
int i,j,t;
for(i=1;i<=n-1;i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
}
}
}
(08181)#include <iostreamh>
#include <iomaniph>
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int year,month,day;
int days;
int count(int year,int month, int day);
int leap(int y);
cout<<"请输入年份:";
cin>>year;
while(year<=0)
{
cout<<"年份不能为负,请重新输入:";
cin>>year;
}
if(leap(year)) //如果为闰年,2月份的天数为29
{ d[2]=29; }
cout<<"输入月份:";
cin>>month;
while(month<1 || month>12)
{
cout<<"月份在1月和12月之间,你的输入有误,请重新输入:";
cin>>month;
}
cout<<"输入日数:";
cin>>day;
while(day<1 || day >d[month])
{
cout<<"日数应在1和"<<d[month]<<"之间,请重新输入:"<<endl;
cin>>day;
}
days=count(year,month,day);
cout<<year<<"年"<<month<<"月"<<day<<"日是该年的第"<<days<<"天\n";
}
int leap(int y)
{
if(y%4==0 && y%100!=0 || y%400==0)
return 1;
else
return 0;
}
int count(int year,int month, int day)
{
int i,days=0;
for(i=1; i<month; i++)
{ days += d[i]; }
days+=day;
return days;
}
#include<stdioh>
int main()
{int a,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{t=a;
a=b;
b=c;
}
if(a>c)
{t=a;
a=c;
c=t;
}
if(b>c)
{t=b;
b=c;
c=t;
}
printf("%5d,%5d,%5d\n",a,b,c);
return 0;
}
只说一下思路
实在写不出来再追问
最好能自己解决
第一题:
就是一个杨辉三角问题
用双循环
外循环是行数(用
i
表示)
从0到n
(n自己输入)
内循环是列数(用
j
表示)
从0到2i-1
然后就是赋
值
很多种方式
比如你定义一个
字符变量
C
给它赋值为A
然后每次都用C给数组赋值
然后让C加1
方法很多
(数组是字符二维数组,
用
之前要初始化一下
给数组都赋值为
空格)
第二题:
定义两个二维数组
一个一维数组
按照题目要求
先把每个同学的成绩和名字分别存放到两个二维数组里面
同样是双循环
然后再用双循环
把每个同学成绩加起来放到一维数组里面
然后接下来就是对一位数组内容进行排序
排序过程中
也要将名字的那个二维数
组同样排序
因为一维数组中的总分顺序和二维数组中的姓名顺序是一样的
比如
要将第二个同学的成绩和第五个同学的成绩交换
那么就要
将总分交换
再将姓名交换
不然分就不对人了
第三题:
题目没明白什么意思
第四题:
用循环从第一个元素判断到最后一个元素
定义4个变量存储
数字
大写
小写
空格出现的次数
查一下ASCII码
数字好像是48-57
大写字母是
65-90
小写是
97-122
判断元素内容的ASCII在哪个范围
哪个变量就加1
以上就是关于c语言程序设计教程吴国栋版答案在哪里找全部的内容,包括:c语言程序设计教程吴国栋版答案在哪里找、求<c语言程序设计>的答案、c语言程序设计实训教程龚义建版答案编写一程序,实现输入3个整数并按从小到大的顺序输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)