有些C语言的问题~有人能帮忙回答一下吗?悬赏100分

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-01
有关C语言的题目,100分的悬赏分,能做出来的再给100分。题目请看下面

这个其实详细分析起来,也不难实现
关键是一些公式我不专业,没法帮你,只好帮你分析一下代码模块的功能及实现的想法

1)显示菜单,是用户可以选择需要计算的齿轮类型;
这个用一组printf或者用一个void型的打印子函数很简单实现
用一个死循环加scanf加switch选择很简单就可以实现,用exit跳出循环结束程序,类似于学生成绩管理系统的大循环

2)根据用户选择的类型,提示用户需要输入的参数,并接收用户输入,输入的参数有误要进行提示并重新输入;
这个可以接着上面的switch中的分支来实现打印提示和输入。错误判断根据需要,我不专业,不好界定什么是错误输入。这个可以用一个do-while死循环输入,正确了跳出。也可以不用死循环,那么while中设置好跳出条件

3)计算过程中需要查询公差表之处要求根据输入参数进行自动查询,公差表文件按照规定格式事先存放在文件中;
这个就是一个文件的读取问题,c基础中有很详细的介绍,不多说

4)如果查询公差表过程中有多个值可选,如选择模数系列等要提供用户选择的机会;
这个就是一个现实和查询以及选择的问题,代码很简单。用数组对应关系,很容易的赋值。

5)按照相应的齿轮计算公式进行尺寸计算;
这个更简单,几行代码就搞定。前面的赋值都解决了,这里就是纯数学公式的计算

6)输出计算结果,并在屏幕上显示,同时提示是否生成计算结果文件,能将计算结果生成一个计算报告,要求报告为文本文件,且格式清晰,便于阅读。
这个就是一个打印和写文件的过程,关键地方是怎么定义这个输出文件的文件名,好做区分用

#include
#include
void sort(char **p,int n)
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(*(p+k),*(p+j))>0)
k=j;
if(k!=i)
{
temp=*(p+i);
*(p+i)=*(p+k);
*(p+k)=temp;
}}}}
int main()
{
char *name[10]={"america","word","c programming","basic","a"};
char **p;
int i;
p=name; //问题一 ,必须初始化p
for(i=0;i<10;i++)
*(p+i)=name[i];
sort(p,5); //问题二 ,你排序的字符串只有5个
for(i=0;i<5;i++) //问题三
puts(name[i]);
return 0;
}

问题二
//
// 第二个程序是,试用字符指针定义函数strcpy(s,t,m),将字符串t中从第m个字符开始的全部字符复制到字符串s中。。。
//
// 我是这么编的
#include
void strcpy(char *s,char *t,int m)
{
int i,j;
for(i=m-1,j=0;t[i]!='\0';i++,j++)
*(s+j)=*(t+i);
*(s+j)='\0';
}


int main()
{
char s[81],t[81];
int m;
gets(t); //这个有问题
scanf("%d",&m); //这里& ,最好先输入字符串,再输入数字
strcpy(s,t,m);
printf("%s",s);
return 0;
}

一.填空题
1.int 2 -(2^16-1)~2^16 (注:谭浩强的书上说int是2字节,VC上实际是4字节)
2.整型,字符型,浮点型
3.-4
4.联合体的所有成员变量共享内存空间,结构体的所有成员变量各自享有内存空间。
5.a=1,b=3,c=2
6.14 m
7.前者是字符串,包含'a'和'\0'两个字符,后者是字符'a'。
8.7,1
9.0
10. false
11.9.876543e4
12.换行
13.9,11,9,10

二.编程题
1、 有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。

#include <stdio.h>
#include <string.h>

#define STU_NUM 3//学生数
#define SCORE_NUM 4//每个学生的科目数

typedef struct /*定义结构体数组*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
float score[SCORE_NUM]; /*成绩*/
float total;//总分
float average;//平均分
} Student;

Student stu[STU_NUM];

//输入学生信息
void input()
{
int i,j;

printf("请输入%d个学生的信息:\n",STU_NUM);
for(i=0;i<STU_NUM;i++)
{
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}

//输出学生信息
void output(int i)
{
int j;

//打印表头
printf("学号\t姓名\t");
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d\t",j+1);
}
printf("总分\t平均分\n");

printf("%s\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("%3.2f\t",stu[i].score[j]);
}
printf("%3.2f\t%3.2f\n",stu[i].total,stu[i].average);
}

//计算总分和平均分
void process()
{
int i,j;

for(i=0;i<STU_NUM;i++)
{
stu[i].total=0;
for(j=0;j<SCORE_NUM;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/SCORE_NUM;
}
}

//找平均成绩最高的
int find()
{
int i,j,max;

max=0;
for(i=1;i<STU_NUM;i++)
{
if(stu[max].average<stu[i].average)
{
max=i;
}
}
return max;
}

void main()
{
input();
process();
output(find());
}

2. 判断m是否素数,并画出流程图。
#include <stdio.h>

//判断m是否素数
int prime(int m)
{
int i;

for(i=2;i<=m/2;i++)
if(m%i==0)
return 0;
return 1;
}

void main()
{
int m;

printf("Input m");
scanf("%d",&m);
if(prime(m))
printf("m是素数\n");
else
printf("m不是素数\n");
}

1.int 4 -(2^31-1)~2^31
2.整型,字符型,布尔型
3.-4
4.前者所有变量共享内存空间,后者各自享有。
5.1,3,2
6.14 m
7.前者是字符串,后者是字符。
8.不可能输出结果。因为一看就知道里面的符号是中文的。编译器不能识别。如果修正的话,答案是:d,7/n
9.0
10. false
11.9.876543e4
12.换行
13.9,11,9,10

一.填空题
1.int
2
-(2^16-1)~2^16
(注:谭浩强的书上说int是2字节,VC上实际是4字节)
2.整型,字符型,浮点型
3.-4
4.联合体的所有成员变量共享内存空间,结构体的所有成员变量各自享有内存空间。
5.a=1,b=3,c=2
6.14
m
7.前者是字符串,包含'a'和'\0'两个字符,后者是字符'a'。
8.7,1
9.0
10.
false
11.9.876543e4
12.换行
13.9,11,9,10
二.编程题
1、
有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。
#include
<stdio.h>
#include
<string.h>
#define
STU_NUM
3//学生数
#define
SCORE_NUM
4//每个学生的科目数
typedef
struct
/*定义结构体数组*/
{
char
num[20];
/*学号*/
char
name[20];
/*姓名*/
float
score[SCORE_NUM];
/*成绩*/
float
total;//总分
float
average;//平均分
}
Student;
Student
stu[STU_NUM];
//输入学生信息
void
input()
{
int
i,j;
printf("请输入%d个学生的信息:\n",STU_NUM);
for(i=0;i<STU_NUM;i++)
{
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}
//输出学生信息
void
output(int
i)
{
int
j;
//打印表头
printf("学号\t姓名\t");
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d\t",j+1);
}
printf("总分\t平均分\n");
printf("%s\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("%3.2f\t",stu[i].score[j]);
}
printf("%3.2f\t%3.2f\n",stu[i].total,stu[i].average);
}
//计算总分和平均分
void
process()
{
int
i,j;
for(i=0;i<STU_NUM;i++)
{
stu[i].total=0;
for(j=0;j<SCORE_NUM;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/SCORE_NUM;
}
}
//找平均成绩最高的
int
find()
{
int
i,j,max;
max=0;
for(i=1;i<STU_NUM;i++)
{
if(stu[max].average<stu[i].average)
{
max=i;
}
}
return
max;
}
void
main()
{
input();
process();
output(find());
}
2.
判断m是否素数,并画出流程图。
#include
<stdio.h>
//判断m是否素数
int
prime(int
m)
{
int
i;
for(i=2;i<=m/2;i++)
if(m%i==0)
return
0;
return
1;
}
void
main()
{
int
m;
printf("Input
m");
scanf("%d",&m);
if(prime(m))
printf("m是素数\n");
else
printf("m不是素数\n");
}

  • 下面有一些关于C语言问题,希望大伙儿侃侃,最好解释详细,谢谢呢?_百度...
    答:x=y;y=t;printf("%d,%d\n",x,y);} 第五题:8 4 void f(int y,int*x) X是按地址传,而Y是按值传,当值传到函数里时,*x可以改变X的值,而Y不能返回.保持原来的值...第六题:这是C语言的内存动态分配,不是很掌握,没有把握,希望其它好心人帮忙一下补齐.第七题:efgh 这道我简单说...
  • 计算机有关c语言的一些问题选择 各位大大 求帮忙~~~
    答:第九题:a 理由:C语言编译器的首要工作是检查语法错误,不能检查逻辑错误 第九题:a 理由: '\72'是转义字符,意思是ascii码值是八进制数72即十进制数58所代表的字符 第十题:b 理由:记住就行 第十一题:a 理由:void既是空的意思 也就是没有返回值 第十二题:这一题我看不大清楚你的...
  • C语言,题目有图,刚入门,有些过程看不懂,希望答案有详细过程?
    答:源程序的每一句解释(见注释),运行结果,程序的功能和运行结果分析如下 include<stdio.h> void main(){ union//定义一个包含长整型和字符型数组的联合结构 { long b;//定义一个长整型 char c[4];//定义一个字符型数组 }s;//定义一个联合结构的变量s s.b= 0xa0000L;//对联合中的长整型...
  • 刚刚做了一些c语言的基础选择题。大家帮我看看对错吧 圈圈的是不会的...
    答:7、++不能用于表达式和常量,AB错,表达式不能做左值,C错,D是对的 12、if(i%5!=0)也就是i不可以被5整除的时候a自增,结果是2 14、D是错的,成员运算符.的优先级高于解引用运算符*,*p.age=20相当于*(p.age)=20,显然有问题 19、long a是有符号长整型,b是短整型,错,CD是无符号...
  • 有关c语言中指针的一些理解问题
    答:然后是b = &a;这个就是b的值是a的地址,也就是b是指向a的指针。b = a;这个一般是非法的。他的含义是将b的值赋值为a的值。对于宽松一点的编译器这个可能可以通过,但是执行结果就是不可预知的了。因为地址也是一个整数,这么做确实从数据上是可以的。但是a的值是不可预见的,那么当做*b的时候...
  • 数据结构中C语言的一些问题
    答:两个节点链接到了一起 然后再重要的事情再说一遍,r始终指向尾节点,不然下一个节点怎么加到尾部 你回去检查下发现,s还是原来那个值,新申请的节点此时有两个指针指向, 一个是r->next 另一个是s 所以让r=s 现在r也指向这个节点了,s可以空闲出来进行下一个节点的申请了 ...
  • 关于c语言的一些常识问题~
    答:let=a let=97 最后有一点要提醒的是,%m.n+类型,此时类型为字符型的时候才为上面将的那样,如果为其他型意思不同,希望注意,好了大了20分钟我也要做自己的事了,说的也有些含糊,希望体谅,本人语言叙述能力不是很好,如果有什么问题可以问我,我还是建议你去看下书,应该都有讲的,朋友加油 ...
  • 我是C语言的初学者,我想知道有哪一些适合我做的数组题。请指教!_百度...
    答:您好!很高兴为您解答。给LZ列举几个类型吧,每个类型都可以扩展出很多。我认为适合新手的题目主要有以下几种:1、排序:将数组中元素按不同方法升序/降序排列;2、查找:如找出数组中特定元素,求出数组中某元素的个数,求最大值最小值;3、计算:如方差,均方差,求数列的第n项,前n项和;4、...
  • 我想请问下关于C语言中编程 有一题最后我不懂 两个语句我有些不明白...
    答:for(j=0;j<10;j++)这个是j 的初始值是0 ,j>10是执行下面语句的条件。j++是 每执行一次 j自加一次 if(a[j]%2==0)如果可以数组a(j)整除2 {s+=a[j];k++;};那么s=s+数组a(j) ,然后k=k+1 if(k!=0) {ave=s/k;printf("偶数的个数:%d\n偶数的平均值: %f\n",k,...
  • 新手提问C语言2
    答:第一个结果是3,以行列的形式理解二维数组,每行3个元素,一共7个元素,则需要3行才能容纳,所以是3.下面三个题目都是二维数组在内存中的发配方式的问题。因为C语言中没有字符串这种变量类型(string),所以字符串都用字符数租的形式表示。而二维数组在内存中的分配方式是现行废配,即如果你申请一个...