当前位置:首页 » 编程语言 » c语言现代方法答案

c语言现代方法答案

发布时间: 2023-05-29 19:13:00

‘壹’ 如何学习c语言程序设计:现代方法

学唯亏习C语言切莫对着别人指槐神的代码照抄明薯,这是做无用功,就像抄作文

‘贰’ c语言scanf函数问题

输入123<空格>456<空格>789<回车>后,所有信息存放在缓存中"123 456 789",计算机开备春茄始判断提取的信息:第一个为%c,就是一森森个字符“1”;第仿察二个为%d,就是一个十进制数23,;第三个为%s(注意,%s是见到空格停止的),就是456,至于789那他就被截掉了。

‘叁’ C语言解答

C语言程序设计复习:

1、理解以下术语的含义镇羡拍判:数组、函数、地址 指针 指针变量 直接访问 间接访问、结构体
2、用起泡法对10个数由小到大排御贺拍序(P134例题)
5、输入10个学生的成绩,分别用函数实现下列功能:
1)计算所有学生的平均分;
2) 计算学生成绩中最高分;
3) 计算学生成绩中最低分;
4) 统计及格学生人数;
5) 查找成绩为指定成绩(如90)记录,如果没有,请给出提示,如果有,请统计满足条件的记录数。
6、有一个已经排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。(P153习题7.4)
7、编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”。(要求用函数)(P202习题8.8)
8、编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针,不能使用strlen()函数) (P279习题10.6)
9、编写一个程序,打入月份号,输出该月的英文月名。例如,输入“3”则输出“March”(要求用指针数组)。(P279习题10.18)
10、将一个数组中的值按逆序重新存放。例如,输入的数组顺序为8,6,5,4,1,要求改为1,4,5,6,8。(P153习题7.5)
11、编写一个函数用“起泡法”对输入的10个字符按由小到大顺序排序(要用函数)。(P202习题8.11)
12、将数组a中n个整数按相反顺序存放(要用函数)。(P237例题10.7)
13、输入一行文字,找出其中大写字母、小写字母、空格、数字及其他字符各有多少。(要求用指针实现)(P279习题10.8)
14、编写一个函数,将两个字符串连接(要用自定义函数,不能用strcat函数)。(P202习题8.6)
15、输入3个字符串,按照由小到大的顺序输出。(要求用指针) (P278习题10.2)
16、输入10整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1、输入10个数; 2、进行处理; 3、输出10个数(数据对换要求用指针实现)(P278习题10.3)

参考答案:
2、用起泡法对10个数由小到大排序
#include <stdio.h>
void main()
{ int a[10]; int i,j,t;
printf("input 10 numbers :\n");
for (i=0;i<10;i++)
scanf("%d“,&a[i]);
printf(“\n");
for(j=0;j<9;j++)
for(i=0;i<10-j;i++)
if (a[i]>a[i+1])

printf("the sorted numbers :\n");
for(i=0;i<10;i++)
printf(“%d “,a[i]);
}
3、用递归方法求n阶勒让德多项式的值,递归公式为(要求用函数):(P202习题8.13)

pn(x)= 1 n=0
x n=1
((2n-1)*x-pn-1(x)-(n-1)*pn-2(x)/n n>1

3、#include <stdio.h>
void main()
{
int x,n;
float p(int,int);
printf(“input n & x:”);
scanf(“%d,%d”,&n,&x);
printf(“n=%d,x=%d\n”,n,x);
printf(“P%d(%d)=%6.2f\n”,n,x,p(n,x));
}
float p(int n,int x)
{
if(n==0)
return 1;
else if(n==1)
return x;
else
return ((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n;
}
4、输入3个整数,按由小到大的顺序输出(要求用指针类型)(P228例题)

4、输入3个整数,按由小到大的顺序输出(要求用指针类型)
#include <stdio.h>
void main()
{
void sort (int*a, int*b,int*c);
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
sort(&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
void sort (int *a, int *b,int *c)
{
int tmp;
if (*a>*b)
{
tmp=*a;
*a=*b;
*b=tmp;
}
if (*a>*c)
{
tmp=*a;
*a=*c;
*c=tmp;
}
if (*b>*c)
{
tmp=*b;
*b=*c;
*c=tmp;
}

}
5、输入10个学生的成绩,分别用函数实现下列功能:
1)计算所有学生的平均分;
6) 计算学生成绩中最高分;
7) 计算学生成绩中最低分;
8) 统计及格学生人数;
9) 查找成绩为指定成绩(如90)记录,如果没有,请给出提示,如果有,请统计满足条件的记录数。

#include <stdio.h>
void main()
{
int average(int a[]);
int max(int a[]);
int min(int a[]);
int pass(int a[]);
int search(int a[],int g);
int i,j,g;
int score[10],aver,m1,m2,p,s;
printf("Please input 10 scores:\n");
for(i=0;i<10;i++)
scanf("%d",&score[i]);
printf("\n");
aver=average(score);
m1=max(score);
m2=min(score);
p=pass(score);
printf("平均分为: %d\n",aver);
printf("最高分为: %d\n",m1);
printf("最低分为: %d\n",m2);
printf("及格人数为: %d\n",p);
printf("需要查找吗?\n");
printf("输入1继续查找,输入0退出(1/0):");
scanf("%d",&j);
if(j==1)
{
printf("请输入要查找的分数: \n");
scanf("%d",&g);
s=search(score,g);
if(s==0)
printf("没有满足条件的记录");
else
printf("成绩为%d的学生共有%d名\n",g,s);
}
}
int average(int a[])
{
int i;
int aver,sum=a[0];
for(i=1;i<10;i++)
sum=sum+a[i];
aver=sum/10;
return aver;
}
int max(int a[])
{
int i;
int m=a[0];
for(i=1;i<10;i++)
if(m<a[i])
m=a[i];
return m;
}
int min(int a[])
{
int i;
int m=a[0];
for(i=1;i<10;i++)
if(m>a[i])
m=a[i];
return m;
}
int pass(int a[])
{
int i;
int s=0;
for(i=0;i<10;i++)
if(a[i]>=60)
s++;
return s;
}
int search(int a[],int g)
{
int i;
int s=0;
for(i=0;i<10;i++)
if(a[i]==g)
s++;
return s;
}

6、已有一个已排好次序的数组,要求输入一个数后,按原先排序的规律将它插入数组中。
Void main()
;
int temp1,temp2,number,end,i,j;
printf("初始数组如下:");
for (i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("输入插入数据:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{ if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<1;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("a%6d",a[i]);
}

7、编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”。
#include <iostream>
void main()
{
void stradd(char str[]);
char str[80];
printf("输入一串数字\n\n");
gets(str);
stradd(str);
printf("\n\n加空格后的字符串\n\n");
puts(str);
}
void stradd(char str[])
{
char a[80];
int i=0,j;
for(j=0;str[j]!='\0';j++)
{
a[i]=str[j];
a[i+1]=' ';
i+=2;
}
a[i]='\0';
for(i=0;a[i]!='\0';i++)
{
str[i]=a[i];
}
str[i]='\0';
}

8、编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针实现)
#include "stdio.h"
int stringlength( char *str )
{int n;
n=0;
While(*str!=0)
{n++;
str++;
}
Return(n);
}

int main()
{
char str〔100〕,
int len,

printf("Please input a string: "),
scanf("%s".str),
len = stringlength( str ),

printf("The string’s length is %d.".len),
return 0;
}

9、编写一个程序,打入月份号,输出该月的英文月名 n。例如,输入“3”则输出“March”,要求用指针数组处理。
#include <stdio.h>
main()
{ char *month_name[13]={"illegal month","January","February","March","April",
"May","June","July","August","September","October","November","December"};
int n;
printf("Input month: ");
scanf("%d",&n);
if((n<=12)&&(n>=1))
printf("It is %s.\n",*(month_name+n));
else
printf("It is wrong.\n");
}
10、将一个数组中的值按逆序重新存放。例如,输入的数组顺序为8,6,5,4,1,要求改为1,4,5,6,8。
#include <stdio.h>
#define N 5;
void main()
{
int a[N],i,temp;
printf(“enter array a:\n”);
for(i=0;i<N;i++)
scanf(“%d”,&a[i]);
printf(“array a:\n”);
for(i=0;i<N;i++)

printf(“\nNow, array a:\n”);
for(i=0;i<N;i++)
printf(“%4d”,a[i]);
printf(“\n”);
}

11、编写一个函数用“起泡法”对输入的10个字符按由小到大顺序排序(要用函数)。
#include <stdio.h>
void main()
{ char str[80];
void sort(char str[]);
printf("输入一个字符串\n\n");
gets(str);
sort(str);
printf("\n\n字符由小到大排序为:\n\n");
puts(str);
}
void sort(char str[])
{ int i,j;
char temp;
for(i=0;i<strlen(str);i++)
{
for(j=0;j<strlen(str)-i-1;j++)
{
if(str[j]>str[j+1])
{
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
}

12、将数组a中n个整数按相反顺序存放(要用函数)。
#include <stdio.h>
void inv(int x[ ],int n)/*形参x是数组名*/

int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{j=n-1-i;
temp=x[i];x[i]=x[j];x[j]=temp;}
return;

void main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf(“转换前的数组为:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
inv(a,10);
printf(“转换后的数组为:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");

13、输入一行文字,找出期中大写字母、小写字母、空格、数字及其他字符各有多少?(要求用指针实现)
#include<stdio.h>
#include<string.h>
int main()
{
char str[40];//创建字符串数组
int count[5]=;//创建计数器数组并初始化
printf("Please input a string .\n");
scanf("%s",str);
char *p=str;//指针p指向字符串数组str
int n=strlen(str);//确定输入字符串的长度
for(int i=0;i<n;i++)
{
if(*(p+i)>='A'&&*(p+i)<='Z')
{
count[0]++;//统计大写字母数目
}
else if(*(p+i)>='a'&&*(p+i)<='z')
{
count[1]++;//统计小写字母数目
}
else if(*(p+i)>='0'&&*(p+i)<='9')
{
count[2]++;//统计数字数目
}
else if(*(p+i)=='')
{
count[3]++;//统计空格数目
}
else
{
count[4]++;//统计其他字符数目
}
}
printf("大写字母 小写字母 数字 空格 其他字符:\n");
for(i=0;i<5;i++)
{
printf("%d\t ",count[i]);//打印各统计数目
}
printf("\n\n");
return 0;
}

14、编写一个函数,将两个字符串连接。
#include < stdio.h >
#include<string.h>
void concatenate(char string1[],char string2[],char string[])
{
int i,j;
for(i=0;string1[i]!=’\0’;i++)
string[i]=string1[i];
for(j=0;string2[j]!=’\0’;j++)
string[i+j]=string2[j];
string[i+j]=’\0’;
}
void main()
{
char s1[100],s2[100],s[100];
printf(“input string1:”);
scanf(“%s”,s1);
printf(“input string2:”);
scanf(“%s”,s2);
concatenate(s1,s2,s)
printf(“the new string is %s”,s);
}
15、输入3个字符串,按照由小到大的顺序输出。 (要求用指针实现)
#include <stdio.h>
void main()
{
void sort (int*a, int*b,int*c);
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
sort(&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
void sort (int *a, int *b,int *c)
{
int tmp;
if (*a>*b)
{
tmp=*a;
*a=*b;
*b=tmp;
}
if (*a>*c)
{
tmp=*a;
*a=*c;
*c=tmp;
}
if (*b>*c)
{
tmp=*b;
*b=*c;
*c=tmp;
}
}

16、输入10整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1、输入10个数; 2、进行处理; 3、输出10个数(数据对换要求用指针实现)
#include <stdio.h>
void input(int number[])
{
Int I;
Printf(“input 10 numbers:”);
For(i=0;i<10;i++)
Scanf(“%d”,&number[i]);
}
void max_min_value(int number[])
{
int *max,*min,*p,temp;
max=min=number;
For(p=number+1;p<number+10;p++)
if(*p>*max)
max=p;
else if(*p<*min)
min=p;
temp=number[0];number[0]=*min;*min=temp;
if(max=number) max=min;
temp=number[9];number[9]=*max;*max=temp;
}
void output(int number[])
{
int *p;
printf(“Now, they are: “);
for(p=number;p<number+10;p++)
Printf(“%d”,*p);
printf(“\n”);
}
void main()
{
int number[10];
input(number);
max_min_value(number);
output(number);
}

‘肆’ 【c语言现代方法第七章编程题4】 求大佬解答-- 编写程序可以把字母格式的电话号码翻译成数值格式 2=ABC等

你的问题关键 是如何 把 电话机 键盘字母 翻译成 数字御歼轿。
可以用 表格:
int key[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
char s[27];
若 ( (s[i] >镇肆= 'A') && (s[i] <= 'Z') ) 则 翻译成 数字 key[ s[i]-'A' ]
---
验证键盘 字母-〉数字 程序:
#include<stdio.h>
int main(){
int i;
int key[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
char s[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (i=0;i<strlen(s);i++){
printf("改闹%c %d\n",s[i],key[s[i]-'A']);
}
return 0;
}

‘伍’ C语言 练习题 使用typedef创建名为Int8,Int16,Int32的类型,定义这些类型分别表示8位,16位,和32位的整数

好像不能这么定义吧。如果需要,可以在你的头文件中卖轮写上上乱配团面的类型定义。最好先理解一下typedef 的含哗橘义。

‘陆’ 谁有C语言程序设计(第三版)杜友福主编的答案啊

C语言程序设计(第三版)习题答案
习题一
一、名词解释
(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)高级语言P2
(5)汇编程序P3 (6)编译程序P4 (7)算法P5 (8)结构化程序设计方法P10

二、简答题
1. 设计程序时应遵循哪些基本原则?P4
答:正确性、可靠性、简明性、有效性、可维护性、可移植性。
2. 算法具有哪些特点?
答:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。
3. 算法的表示形式有哪几种?
答:自然语言、伪代码、传统流程图、N-S流程图、计算机语言。
4. 结构化程序设计方法的三种基本结构是什么?
答:顺序结构、选择结构和循环结构。
5. 传统流程图与N-S流程图最大的区别是什么?
答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。

三、用传统流程图或N-S流程图表示求解以下问题的算法。
1. 从键盘输入10个和塌整数,求出其中的最小数并输出。

2. 求1 2 3 … 100的值。

3. 求10~50的所有素数之和。

4. 求下列分段函数的值。

四、请参照本章例题,编写一个简单的C程序,输出以下三行信息。
**************************
Yangtze University
**************************

#include <stdio.h>
void main()
{
printf("**************************\n");
printf(" Yangtze University\n");
printf("**************************\n");
}

习题二
一、选择题
1~10: B C D C D D B C A A
11~20: D A C D B D B A C D

二、填空题
1.字母 L 或字母 l
2. %c(或字符) 、 %d(或整数)
3. 在程序运行过程中,其值可以在一定的范围内变化的量
4. '\0'
5. 小数形式 、 指数形式
6. 关键字 、 预定义标识符 、 用户标识符
7. 字母 、 数字 、 下划线 、 数字
8. 18
9. 2 、 1 、 30
10. 双精度实数或double
11. 赋值 、 逗号 、 20 、 20 、 20 、 4
12. 4 、 4

习题三
一、选择题
1~10: B C C B C C C D C C
注:第4题答案D为: 10 22↙
33↙

二、填空题
1. printf 、 scanf
2. h
3. "]"
4. '\0'
5. e 、 E
6. 6
7. s 、 c
8. *
9. - 、
10. i

三、编程题
1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进
行输出。例如输入的时间为4258秒,则输出结果为:1小时10分58秒。
#include <stdio.h>
void main()
{
int x,h,m,s;
scanf("%d",&x);
h=x/3600; m=x600/60; s=x`;
printf("%ds=%d:%d:%d!\n",x,h,m,s);
}
2. 编写程序,读入三个整数给变量a、b、c,然后交换它们中的数,把a中原来的值给b,
把b中原来的值给c,把c中原皮念来的值给a。
#include <stdio.h>
void main()
{
int a,b,c,t;
printf("input a b c:");
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);
}

习题四
一、填空题
1. 1 、唤握圆 0
2. ! % + <= != && || =
3. x==0
4. 0 、 2
5. 20 、 0 、 0

二、选择题
1~7:D D C A D D C

三、程序阅读题
1. 595959
2. 0.500000
3. 1
4. 2
5. 6
6. a=2,b=1
7. pass
warn
8. 1

四、编程题
1. 设a为整型变量且其值大于零,请将以下if语句改写成switch语句。
if(a<60) m=1;
else if(a<70) m=2;
else if(a<80) m=3;
else if(a<90) m=4;
else m=5;
方法1
#include <stdio.h>
void main()
{
int a,m;
scanf("%d",&a);
switch(a/10)
{
case 0:case 1:case 2:case 3:
case 4:case 5:m=1;break;
case 6:m=2;break;
case 7:m=3;break;
case 8:m=4;break;
default:m=5;break;
}
printf("m=%d\n",m);
}
方法2
#include <stdio.h>
void main()
{
int a,m;
scanf("%d",&a);
m=0;
switch(a/10)
{
default:m ;
case 8:m ;
case 7:m ;
case 6:m ;
case 5:case 4:case 3:case 2:
case 1:case 0:m ;
}
printf("m=%d\n",m);
}
2. 编写程序,从键盘输入一个整数,打印出它是奇数还是偶数。
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);
if(a%2==1)
printf("%d is a odd number!\n",a);
else
printf("%d is a even number!\n",a);
}
3. 编写程序,从键盘输入一个字符,判别它是否是小写字母,如果是,将它转换为大写字母;如果不是,不转换。然后输出最后得到的字符。
#include <stdio.h>
void main()
{
char ch;
scanf("%c",&ch);
if(ch>='a' && ch<='z')
ch=ch-32;
printf("%c\n",ch);
}
4. 编写程序,从键盘输入一个不多于4位的正整数,打印出它是几位数。
#include <stdio.h>
void main()
{
int x,n;
scanf("%d",&x);
if(x>1000) n=4;
else if(x>100) n=3;
else if(x>10) n=2;
else n=1;
printf("%d\n",n);
}
5. 当一个人的月收入在3500元以下时免税;月收入在3500元到5000元之间时,超过3500的部分纳税3%;月收入在5000元以上时,3500至5000之间的部分纳税3%,超过5000的部分纳税10%。编写程序从键盘输入月收入income,计算并输出应交税款tax。
#include <stdio.h>
void main()
{
int income;
float tax;
scanf("%d",&income);
if(income<=3500) tax=0;
else if(income<=5000) tax=0.03*(income-3500);
else tax=0.03*(5000-3500) 0.10*(income-5000);
printf("tax=%f\n",tax);
}
6. 回文是指正读和反读都一样的数或字符串。例如:12321、55455、35553等都是回文。请编写一个程序,从键盘上读取一个包含五位数字的长整数,并判断它是否是回文。(提示:用除法运算和求余运算把一个数的个位、十位、百位、千位等分别分离出来。)
#include <stdio.h>
void main()
{
long x;
int a,b,d,e;
scanf("%ld",&x);
a=x/10000;
b=x000/1000;
d=x0/10;
e=x;
if(a==e && b==d)
printf("%ld is huiwen!\n",x);
else
printf("%ld is not huiwen!\n",x);
}

习题五
一、阅读题
1. 8
2. 4321
3. X
4. -1
5. 23
6. 52
7. 5
8. 3

二、填空题
1. 18
2. 2
3. b=i 1
4. 17
5. i<=9 、 j%3!=0
6. d=1.0 、 k=k 1 、 k<=10

三、选择题
1~8:A D D A B D D A

四、编程题
1. 编写程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方之和等于该数本身。例如,407是一个“水仙花数”,因为407=43 03 73。(注:若将题意改为打印出最大的或最小的“水仙花数”,则应将循环语句作如何调整?)。
#include <stdio.h>
void main()
{
int a,b,c,k;
for(k=100;k<=999;k )
//求最大的“水仙花数”改用:for(k=999;k>=100;k--)
{
a=k/100;b=k/10;c=k;
if(k==a*a*a b*b*b c*c*c)
{
printf("]",k);
//求最大或最小”水仙花数”时增加一个语句:break;
}
}
printf("\n");
}
2. 编写程序,输出1980~2880年所有闰年的年号。每输出5个年号换一行。
#include <stdio.h>
void main()
{
int k,flag,n=0;
for(k=1980;k<=2880;k )
{
flag=(k%4==0)&&(k0!=0)||(k@0==0);
if(flag)
{
printf("]",k);
n ;
if(n==0)
printf("\n");
}
}
printf("\n");
}
3. 编写程序,求1-3 5-7 …-99 101的值。
#include <stdio.h>
void main()
{
int n,t=1,s=1;
for(n=3;n<=101;n =2)
{ t=-t; s=s t*n; }
printf("s=%d\n",s);
}
4. 编写程序,计算并输出下列级数的前n项之和Sn。n的值从键盘输入。

#include <stdio.h>
void main()
{
int fz,fm,n,i;
float s,t;
fz=2;fm=1;s=0;
scanf("%d",&n);
for(i=1;i<=n;i )
{
t=(1.0*fz)/fm;
s=s t;
fz=fz fm;
fm=fz-fm;
}
printf("s=%f\n",s);
}
5.编写程序,求e的值e=1 1/1! 1/2! 1/3! 1/4! … 1/n!
#include <stdio.h>
void main()
{
int n,i;
float t,fm=1,e=1;
scanf("%d",&n);
for(i=1;i<=n;i )
{ fm=fm*i; t=1.0/fm; e=e t; }
printf("n=%d,e=%f\n",n,e);
}
6. 已知某球从80米高度自由落下,落地后反复弹起,每次弹起的高度都是上次高度的一半。求此球8次落地所经过的总路程。
#include <stdio.h>
void main()
{
int n;
float s=80,h=s/2;
for(n=2;n<=8;n )
{
s=s 2*h;
h=h/2;
}
printf("s=%f\n",s);
}
7. 用牛顿迭代法求高次方程f(x)=2x3-4x2 5x-18=0的根(约为2.466)。
注:牛顿迭代公式为:x2=x1-f(x1)/f’(x1),其中f’(x1)为导函数在点x1的值。
#include <stdio.h>
#include <math.h>
void main()
{
float x,f,f1;
x=8; // x的初值可为任意值
do
{ f=2*x*x*x-4*x*x 5*x-18; f1=6*x*x-8*x 5; x=x-f/f1;
}while(fabs(f)>0.00001);
printf("x=%f,f=%f\n",x,f);
}
8. 有这样一些真分数:其分子和分母都是两位正整数,且分子的个位数与分母的十位数相同,如果把该分数的分子的个位数与分母的十位数同时去掉,所得到的新的分数正好与原分数的值相等,如26/65=2/5。试编程求出所有满足上述条件的真分数。
#include <stdio.h>
void main()
{
int a,b,c; // 设这个分数为ab/bc
for(a=1;a<=9;a )
for(b=1;b<=9;b )
for(c=1;c<=9;c )
if((a<c)&&(1.0*a/c==(a*10.0 b)/(b*10.0 c)))
printf("%d/%d=%d%d/%d%d=%f\n",a,c,a,b,b,c,1.0*a/c);
}
9. 编写程序,求数列:1,(1 1/2),(1 1/2 1/3),(1 1/2 1/3 1/4),(1 1/2 1/3 1/4 1/5),…的前10项之和。
#include <stdio.h>
void main()
{
float s,t;
int i;
s=0,t=0;
for(i=1;i<=10;i )
{ t=t 1.0/i; s=s t; }
printf("s=%f\n",s);
}
10. 编写程序,求3到100之间的所有素数之和。
#include <stdio.h>
void main()
{
int s,i,k,flag;
s=0;
for(i=3;i<=100;i )
{
flag=1;
for(k=2;k<i;k )
if(i%k==0)
{ flag=0; break; }
if(flag)
{ s=s i; printf("M",i); }
}
printf("\nsum=%d\n",s);
}
11. 编写程序,求Fibonacci数列中大于800的最小的一个数(结果为987)。
#include <stdio.h>
void main()
{
int f1=1,f2=1,f3;
while(f3<=800)
{
f3=f1 f2;
f1=f2;
f2=f3;
}
printf("Fibonacci数列中大于800的最小数是]\n",f3);
}

习题六
一、选择题
1~10:D D C B A B C D C D
11~20:A B B C C D C A B B
21~30:B B D D D D C D C A
注:第16题答案C为:字符串"SHORT"与"SHORT "相等
第19题题目为:已知:char str1[10],str2[10]={"books"};则在程序中能够将字符串
"books"赋给数组str1的正确语句是 。
第21题题目为:设有:char str1[20]="abcde",str2[20]="xyz";则执行语句:
printf("%d",strlen(strcpy(str1,str2)); 的结果是 。
第28题答案D为: aaaa
bbbb

cccc dddd

二、填空题
1. 9 、 0
2. 先行后列
3.

‘柒’ c语言里,怎样判断共用体union的数据类型

我刚好也在考虑此问题,答案给各位补充完整:

ps:<C语言程序设计现代方法第二版>,该书明确说明。要判断设置的是什么类型的值只有增加标识。

可以这样设计数据结构:

structmydata{
intsetflag;
union{
intstate;
char*msg;
}data;
};

mydata 自己设计得数据类型,setflag 标识设置的是哪个成员,从上到下可以从union的第一个成员开始:

如果第一个成员被设置,则setflag的最低位置1,其他位清零;

如果第二个成员被设置则,则setflag的倒数第二位置1,其他位清零;

以此类推,int一般是32位的,union最多可以有32个成员,成员多了可以再扩展标识变量(比如使用64位的long long 类型)。

然后写一套操作函数:初始化mydata,设置成员值,获取当前设置的成员值(可返回具体类型,union的每个成员需要对应一个get),判断当前某个成员被设置,判断当前是否设置过成员值。

自己实现的一套访问函数签名,如下:

//不知道编译器会在setflag中放啥值,这个函数用来把setflag初始化为0
voidinitiate(structmydata*ptrdata);
//设置值得时候同时设置标识位
voidset(constvoid*ptrval,intbit);
//成功返回0,失败返回-1,ptrintval指向预先分配的int地址空间
intgetstate(int*constptrintval);
//成功返回指向msg的指针,失败返回NULL
char*getmsg();
//判断当前设置的是哪个成员变量,取值1到32。如果给定的位被设置返回1,否则返回0
intissetmember(intflag);
//判断当前是否设置过成员,setflag=0说明没有设置过返回0,否则设置过返回1
intisset();

//initiate必须先调用,否则后面的判断会有问题。弄得有点像C++或java的类了。

‘捌’ c语言程序设计:现代方法 第二版p44中有一段语句: i = 2; j = i*i++; 的问题。

别听他们胡说 书上说得对 未定义行为指 在表达式[两个顺序点之间]里面 多次修改同行此一个变量

用编译器得到同样的结果也说明不了什么
i*i++ 是这样的做法
那么编译器怎么实现就不好说了

原文
C语言标准明确说过:
Undefined behavior:
Between two sequence points, an object is modified more than once, or is modified and the prior value is read other than to determine the value to be stored (6.5).

译文
在序列点间
多次修改同一个对象(i=++i/++i + ++i/ i++ + ++i/...)
除当前修改的需要存储的值的以外再读取该值(i+i++/++i*i/...)
或者说在修改的同时在别的表达式中再用这个对象
是未定义的行为

i*i++
可以对应 在序列点之间 在当前修改姿带漏需要存储的值以外再读取该值 后面的例子 有迹烂
i+i++
这个和你的i*i++ 雷同

‘玖’ c语言程序设计 现代方法 第二版 课后答案 (美 K.N.king)

if (entity != null) {
final InputStream instream = entity.getContent();
try {
final StringBuilder sb = new StringBuilder();
final char[] tmp = new char[1024];
final Reader reader = new InputStreamReader(instream,encoding);
int l;
while ((l = reader.read(tmp)) != -1) {
sb.append(tmp, 0, l);
}
body = sb.toString();
} finally {
instream.close();
EntityUtils.consume(entity);
}

‘拾’ 现代编译原理c语言描述 这本书有答案吗

新手的话建议可以看看谭浩强的C程序设计,基本语法会了,可以看下数据结构和算法,接下来看计算机组成原理-->编译原理-->操作系统-->计算机网络。这些学好了,可以深入研究算法,另外可以看点计算机图形学和人工智能。程序最核心的是算法,所以数学基础要好,不能只能做一辈子码奴。其次英语要好,只要能看懂一般的英文文档就OK了。给你介绍一些书。1、算法计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑算法导论-----------------ThomasH.Cormen--------算法“倚天屠龙”双剑离散数学及其应用----------KennethH.Rosen具体数学—计算机科学基础--------Donald.E.Knuth2、数据结构数据结构C++数据结构算法与应用3、C语言C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---BrianW.Kernighan“C语言之父”CPrimerPlus中文版(第五版)--------C语言“倚天屠龙双剑”---StephenPrataC程序设计(第三版)---------------------------谭浩强C语言大全(第四版)---------------------------HERBERTSCHILDTC语言接口与实现:创建可重用软件的技术-------------DAVIDR.HANSONC语言参考手册(原书第5版)--------------------------SamuelP.HarbisonC程序设计教程---------------------------------H.M.Deitel/P.J.DeitelC陷阱与缺陷-----------------------------------AndrewKoenig5、C++C++程序设计语言(特别版)---c++八大金刚----BjarneStroustrup“C++之父”C++Primer(第3版)中文版----c++八大金刚---StanleyB.LippmanC++Primer(第4版)中文版----c++八大金刚---StanleyB.LippmanC++标准程序库—自修教程与参考手册--c++八大金刚--NicolaiM.JosuttisC++语言的设计和演化-----c++八大金刚----BjarneStroustrup“C++之父”深度探索C++对象模型---c++八大金刚----StanleyB.LippmanEssentialC++中文版---c++八大金刚---StanleyB.LippmanEffectiveC++中文版2ndEdition-----c++八大金刚------ScottMeyersMoreEffectiveC++中文版----c++八大金刚------ScottMeyersC++编程思想(第2版)第1卷:标准C++导引--------BruceEckelC++编程思想(第2版)第2卷:实用编程技术--------BruceEckelC++程序设计--------------------------谭浩强C++程序设计教程(第2版)--------------钱能C++PrimerPlus(第五版)中文版---StephenPrata6、操作系统深入理解计算机系统(修订版)-------RANDALE.BRYANT计算机操作系统(第六版)7、编译原理跟我一起写makefile《编译原理技术和工具》-------Alfred-------龙书《现代编译原理-C语言描述》-----------AndrewW.Appel-----------虎书《高级编译器设计与实现》-----------StevenS.Muchnick-----------鲸书8、网络计算机网络第四版中文版-----------AndrewS.Tanenbaum-------网络编程三剑客TCP/IP详解3卷本--------------------RichardStevens----网络编程三剑客UNIX网络编程2卷本--------------------RichardStevens----网络编程三剑客用TCP/IP进行网际互联-----------DouglasE.Comer高级TCP/IP编程-------------------JonC.SnaderC++网络编程-----------------------DouglasSchmidtUNIX环境高级编程(第2版)--------------------RichardStevens9、LinuxLinux内核设计与实现Linux内核完全注释LINUX内核分析及编程

热点内容
分类信息网站的源码 发布:2024-05-09 03:31:18 浏览:98
sqlupdate日期 发布:2024-05-09 03:27:14 浏览:880
java培训有人要吗 发布:2024-05-09 03:21:16 浏览:970
c语言多次输入数据 发布:2024-05-09 03:12:50 浏览:738
pythonide使用 发布:2024-05-09 02:56:52 浏览:350
社区电商源码 发布:2024-05-09 02:33:00 浏览:150
辽事通登记需要的密码是什么 发布:2024-05-09 02:25:45 浏览:284
云服务器选择什么系统 发布:2024-05-09 01:55:51 浏览:968
mel脚本编程全攻略 发布:2024-05-09 01:54:43 浏览:479
如何在机房安装ntp服务器 发布:2024-05-09 01:13:57 浏览:206