c语言程序设计这道题,求求

c语言程序设计这道题,求求,第1张

#include <stdioh>

#include <stdlibh>

#include <timeh>

#define N 10

void sort(int arr[], int n);

int main()

{

int arr[N];

int i;

srand((unsigned int)time(NULL)); // 设置随机数种子

// 随机生成10个1到100的正整数

for (i = 0; i < N; i++) {

arr[i] = rand() % 100 + 1;

}

printf("排序前:");

for (i = 0; i < N; i++) {

printf("%d ", arr[i]);

}

printf("\n");

sort(arr, N); // 排序

printf("排序后:");

for (i = 0; i < N; i++) {

printf("%d ", arr[i]);

}

printf("\n");

return 0;

}

void sort(int arr[], int n)

{

int i, j, temp;

for (i = 0; i < n - 1; i++) {

for (j = 0; j < n - 1 - i; j++) {

if (arr[j] < arr[j+1]) { // 如果前一个元素比后一个元素小,交换位置

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

}

1、C程序的执行特点是 (c)

A、从程序的main函数开始,到程序的最后一个函数结束

B、从程序的第一个函数开始,到程序的最后一个函数结束

C、从程序的main函数开始,到程序的main函数结束

D、从程序的第一个函数开始,到程序的main函数结束

2、字符型(char)数据在微机内存中的存储形式是 (b)

A、BCD码 B、ASCH码 C、补码 D、反码

3、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m==a>b)&&(n==c>d)后n的值为(d)

A、2 B、3 C、1 D、0

4、设有定义;float a=2,b=4,h=3;

以下语言表达式中与代数式1/2(a+b)h计算结果相符的是 (d)

A、(a+b)h/2 B、(1/2)(a+b)h

C、(a+b)h1/2 D、h/2(a+b)

5、在以下一组运算符中,优先级最高的运算符是

(d)

A、&& B、= C、<= D、%

6、设有以下定义// 这题目 貌似错的

int a=0;

double b=125;

char c=’A’;

#define D 2

则下面语句中错误 的是 ()

A、a++ B、b++ C、c++ D、d++

7、设int m=1,n=2,m++==n表达式的结果是

(b)

A、0 B、1 C、2 D、3

8、设有如下定义:int x=10,y=3,z;则语句

printf(“%d/n”,z=(x%y,x/y));的输出结果是 (a)

A、3 B、1 C、0 D、4

9、假定所有变量均已正确说明,下列程序段运行后X的值是 (b)

int a,b,c,x;

a=b=c=0;

if(b)

x=3

else

x=4;

A、35 B、4 C、34 D、3

10、设变量c为char类型,能正确判断出c为小写字母的表达式是(c)

A、‘a’<=c<=’z’ B、(c>=’a’)||(c<=’z’)

C、(c<=’a’)&&(c<=’z’) D、以上都不是

11、为了避免在嵌套的条件语句(if-else)中产生二义性,C语言规定:else子句总是

与 (b) 配对。

A、缩排位置相同的if B、其之前最近的if

C、其之后最近的if D、同一行上的if

12、循环语句while和do-while的主要区别是(a)

A、do-while循环体至少要无条件执行一次,while循环可以一次都不执行

B、while的循环控制条件比do-while的循环控制条件更严格

C、do-while允许从外部跳转到循环体内

D、do-while的循环体不能是复合语句

13、当执行以下程序段时

x=-1;

do{x=xx;} while(!x); (a)

A、循环体将执行一次 B、循环体将执行两次

C、循环体将执行无限次 D、系统将提示有语法错误

14、设有定义:int a{10};以下对a数组元素正确引用的是(d)

A、a[10] B、a[3,5] C、a (5) D、a[10-10]

15、若用数组名作为函数的实参,传递给形参的是

(a)

A、数组的首地址 B、数组第一个元素的值

C、数组中全部元素的值 D、数组元素的个数

16、C语言允许函数类型缺省定义,此时函数值隐含的类型是 (b) A、float B、int C、long D、double

这些符号是条件限定宏,不仅仅用在数据结构编程中,它们在类的头文件声明,dll编程,判断编译环境和平台,甚至可用在某个代码片段中,以便程序的调试等。他们的用法很灵活,但含义其实和if else差不多,多编写和阅读代码,你很快就会掌握!

具体的设计方法,可以参考如下代码:

#include <stdioh>

#include <stringh>

#include <iostreamh>

#include <stdlibh>

#include <windowsh>

typedef struct studentinfo //结构体定义

{

int num;//学号

char name[64];//姓名

int sex;//性别,1为男性,0为女性

float math;//数学

float english;//英语

float politic;//政治

float chinese;//语文

float total;//总成绩

struct studentinfo next;

}STUDENT;

#define FILENAME "D:\\1txt"

//定义默认的数据库文件

#define DELAYTIME 1500

//显示信息,延时

void create_menu();

STUDENT new_student();

STUDENT create_linkbyfile(char );

STUDENT del_info(STUDENT );

int save_info(char ,STUDENT ,int);

int find_infile_printf(char );

int pri_whole_link(STUDENT );

STUDENT printf_sort(STUDENT );

void free_link(STUDENT );

void main() //主函数

{

create_menu();

}

void create_menu()

//功能:输出功能菜单,提供人-机接口

{

int menu_Num;

STUDENT head=NULL;

char ch;

char file_name[256];

while(1)

{

system("cls");

cout<<"\t\t学生成绩管理系统\n";

cout<<"##########################################\n";

cout<<"#\t\t 1新增学生信息\t\t #\n";

cout<<"#\t\t 2加载数据库\t\t #\n";

cout<<"#\t\t 3删除学生信息\t\t #\n";

cout<<"#\t\t 4保存学生信息\t\t #\n";

cout<<"#\t\t 5数据库查询\t\t #\n";

cout<<"#\t\t 6原序输出\t\t #\n";

cout<<"#\t\t 7排序输出\t\t #\n";

cout<<"#\t\t 8退出\t\t\t #\n";

cout<<"##########################################\n";

cout<<"请输入 *** 作编号:";

cin>>menu_Num;

switch (menu_Num)

{

case 1:

free_link(head);//释放链表空间

head=new_student();//新增学生信息

break;

case 2:

free_link(head);//释放链表空间

cout<<"请输入要加载的数据库文件的路径"<<endl;

cin>>file_name;

head=create_linkbyfile(file_name);//读取数据文件

if(head!=NULL)

{

cout<<"数据库"<<file_name<<"已加载"<<endl;

Sleep(DELAYTIME);

}

break;

case 3:

del_info(head);//删除学生信息

break;

case 4://保存学生信息

if (head==NULL)

{

cout<<"请先生成学生信息"<<endl;

Sleep(DELAYTIME);

}

else

{

cout<<"想将学生信息保存到哪个数据库文件?";

cin>>file_name;

cout<<"请选择保存方式:0追加到文件末尾 1覆盖文件\n";

cin>>menu_Num;

if(save_info(file_name,head,menu_Num)==0)//0表示追加,1表示覆盖

{

cout<<"信息保存失败\n";

}

else

{

cout<<"数据已保存到"<<file_name<<endl;

Sleep(DELAYTIME);

}

}

break;

case 5:

find_infile_printf(FILENAME);//数据库查询

break;

case 6://原序输出信息

pri_whole_link(head);

cout<<"返回主菜单? Y/N\t";

do

{

cin>>ch;

}while(ch!='Y'&&ch!='y');

break;

case 7://排序输出信息

do

{

if((head=printf_sort(head))==NULL)

{

cout<<"数据库未加载"<<endl;

Sleep(DELAYTIME);

break;

}

else

{

cout<<"选择其他方式排序? Y/N\t";

cin>>ch;

}

}while(ch=='Y'||ch=='y');

break;

case 8:

free_link(head);//释放链表空间

exit(0);

break;

default:

cout<<"输入有误!请重新输入!"<<endl;

break;

}

}

}

STUDENT new_student()

//功能:创建学生信息(通过链表)

//返回值:头结点指针

{

STUDENT pnew,p,head;

float pfloat;

char ch;

head=NULL;

do

{

system("cls");

pnew=(STUDENT )malloc(sizeof(STUDENT)1);

cout<<"请输入学生的学号(0表示取消): ";

cin>>pnew->num;

if(0>=pnew->num)

{

break;

}

cout<<"请输入学生的姓名:";

cin>>pnew->name;

while(1)

{

cout<<"请输入学生的性别:0/1\t";

cin>>pnew->sex;

if(pnew->sex&&pnew->sex-1)

{

cout<<"性别输入错误,0表示女性,1表示男性,请重新输入"<<endl;

}

else

{

break;

}

}

cout<<"请依次输入学生的数学、英语、政治、语文成绩:"<<endl;

for(pnew->total=0,pfloat=&pnew->math;pfloat<&pnew->math+4;)

{

cin>>pfloat;

if(pfloat<0||pfloat>150)

{

cout<<"成绩输入错误,只能为0~150"<<endl;

}

else

{

pnew->total+=pfloat;

pfloat++;

}

}

if(head==NULL)

{

head=pnew;

}

else

{

p->next=pnew;

}

p=pnew;

pnew->next=NULL;

cout<<"##########################该学生信息已生成#########################\n";

cout<<"建立另一个学生的信息? Y/N\t";

cin>>ch;

}while(ch=='Y'||ch=='y');

return head;

}

STUDENT create_linkbyfile(char filename)

//功能:读取文件,创建链表

//参数:如果filename不为空,则打开该文件,如果filename为空,要求输入文件位置

//创建的链表的所有结点的next全部修改,指向物理地址上的下一个结点

{

system("cls");

FILE fp;

STUDENT head,ptemp,pnew;

head=NULL;//初始化head为空

if(filename==NULL)//若filename为空,要求输入文件绝对地址

{

char file_name[256];

cout<<"请输入数据库文件的路径:"<<endl;

cin>>file_name;

if(NULL==(fp=fopen(file_name,"rb")))

{

cout<<"数据库连接失败\n";

return 0;

}

}

else

{

if(NULL==(fp=fopen(filename,"rb")))

{

cout<<"数据库连接失败\n";

return 0;

}

}

for(ptemp=NULL;;)

{

pnew=(STUDENT )malloc(sizeof(STUDENT)1);

if(fread(pnew,sizeof(STUDENT),1,fp)!=NULL)

{

if(ptemp!=NULL)

{

ptemp->next=pnew;

}

else

{

head=pnew;

}

ptemp=pnew;

}

else

{

if(ptemp!=NULL)

{

ptemp->next=NULL;

}

else

{

head=NULL;

}

free(pnew);

break;

}

}

fclose(fp);

return head;

}

STUDENT del_info(STUDENT head)

//根据学号,删除链表的结点

{

system("cls");

STUDENT p1,p2;

int num;

if (head==NULL)

{

cout<<"数据库未加载"<<endl;

Sleep(DELAYTIME);

return 0;

}

cout<<"请输入要删除学生的学号:";

cin>>num;

for(p1=head;p1!=NULL;)

{

if(p1->num==num)/到

{

if(p1==head)//要删除的结点是头结点

{

head=p1->next;

}

else

{

p2->next=p1->next;

}

cout<<"成功删除!!";

}

p2=p1;

p1=p1->next;

}

return head;

}

int save_info(char filename,STUDENT head,int flag)

//功能:将链表按Binary写入文件末尾

//参数:

//1filename文件名,绝对地址

//2head指向链表的头结点

//3flag 0追加或1覆盖数据

//返回值:失败则返回0

{

system("cls");

FILE fp;

STUDENT p;

char openmethod[8];

if(flag==0)

{

strcpy(openmethod,"ab+");//追加

}

else

{

strcpy(openmethod,"w");//覆盖

}

if(NULL==(fp=fopen(filename,openmethod)))//

{

cout<<"数据库连接失败"<<endl;

Sleep(DELAYTIME);

return 0;

}

else

{

for(p=head;p;p=p->next)

{

if((fwrite(p,sizeof(STUDENT),1,fp))==NULL)

{

cout<<"数据库创建失败"<<endl;

return 0;

}

}

}

fclose(fp);

return 1;

}

int find_infile_printf(char filename)

//功能:根据学号和姓名来查询某个学生

//参数:filename数据库文件

//返回值:失败返回0

//直接搜索文件,缺点是速度慢

//也可先根据文件创建链表,再搜索链表,缺点是如果文件较大,占用内存多

{

system("cls");

FILE fp;

STUDENT stu;

int num;

char stu_name[64];

char ch;

if(filename==NULL)

{

return 0;

}

do

{

memset(stu_name,0,sizeof(stu_name));

cout<<"查询学号或查询姓名? 1查询学号 0查询姓名";

//flag=1根据学号来查询,flag=0根据姓名来查询

cin>>num;

if(num==1)

{

cout<<"输入要查询的学号:";

cin>>num;

cout<<"正在为您查询学号为"<<num<<"的学生……"<<endl;

}

else if(num==0)

{

cout<<"输入要查询的姓名:";

cin>>stu_name;

cout<<"正在为您查询姓名为"<<stu_name<<"的学生……"<<endl;

}

else

{

cout<<"输入有误"<<endl;

return 0;

}

if(NULL==(fp=fopen(filename,"rw")))

{

cout<<"数据库连接失败\n";

return 0;

}

else

{

while(fread(&stu,sizeof(STUDENT),1,fp)!=NULL)

{

if(strcmp(stuname,stu_name)==0||stunum==num)

{

cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";

//输出该学生的所有信息

cout<<stunum<<"\t"<<stuname<<"\t"<<stusex<<"\t"<<stumath<<"\t"<<stuenglish<<"\t"<<stupolitic<<"\t"<<stuchinese<<"\t"<<stutotal<<endl;

//不加break;可支持多个相同数据的索引

}

}

}

cout<<"##########################查询完毕#########################\n";

cout<<"查询另一个学生的信息? Y/N\t";

cin>>ch;

}while(ch=='Y'||ch=='y');

fclose(fp);

return 1;

}

int pri_whole_link(STUDENT head)

//功能:显示整条链表的学生信息

//参数:head 头结点指针,如果head为空,返回空

{

system("cls");

STUDENT p;

if (head==NULL)

{

cout<<"数据库未加载"<<endl;

Sleep(DELAYTIME);

return 0;

}

cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";

for(p=head;p;p=p->next)

{

cout<<p->num<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->math<<"\t"<<p->english<<"\t"<<p->politic<<"\t"<<p->chinese<<"\t"<<p->total<<endl;

}

return 1;

}

STUDENT printf_sort(STUDENT head)

//功能:根据学号|某科目成绩|总成绩对链表进行排序,然后输出

//参数:head链表头指针,如果head为空,返回空

//返回值:返回新的链表的头结点指针

{

system("cls");

STUDENT p1,p2,ptemp,pfinished=NULL;

int num;

int flag;

if (head==NULL)

{

return 0;

}

cout<<"选择排序依据 0数学成绩1英语成绩2政治成绩3语文成绩4总成绩\n";

cin>>num;

// cout<<"升序/降序输出? 0升序1降序";

// cin>>flag;

for(p1=head;p1->next!=pfinished;)//对链表进行从大到小排序(这里用冒泡法)

//p1使之总是指向头结点,pfinished使之总是指向已排序好的最前面的结点

//ptemp作为中介,保存p2的上一个结点

{

for(p2=p1;p2->next!=pfinished;)

{

if((&(p2->math)+num)<(&(p2->next->math)+num))//p2的值小于p2->next的值,交换 ptemp p2 p2->next

{

if(p2==p1)//头结点要交换

{

p1=p2->next;

p2->next=p1->next;

p1->next=p2;

ptemp=p1;

}

else

{

ptemp->next=p2->next;

ptemp=p2->next;

p2->next=ptemp->next;

ptemp->next=p2;

}

}

else//不需要交换,则p2、ptemp前进1位

{

ptemp=p2;

p2=p2->next;

}

}

pfinished=p2;

}

// if(flag==1)

// {

pri_whole_link(p1);

// }

// else

// {

// }

cout<<"##########################信息显示完毕#########################\n";

return p1;

}

void free_link(STUDENT head)

//释放链表空间,如果head,什么都不做

{

STUDENT p1,p2;

for(p1=head;p1;p1=p2)

{

p2=p1->next;//先保存,否则

free(p1);//free后 p1->next数据丢失

}

}

这些不叫做关键字, 关键字绝不能带#的

这些是预处理命令, 或者叫做宏, 不是C语言的主体 是编译器进行预处理时执行的

一般是用来定义常量的

预处理命令都以#开头

常用的有

#define

#include

#ifdef

《C语言程序设计 》百度网盘资源免费下载

 ejmz

01 00 C语言程序设计 谭浩强版 全30讲 曾怡 石油大学|各学科 学习视频目录|1-15讲|[C语言程序设计视频教程(曾怡)]15csf|[C语言程序设计视频教程(曾怡)]14csf|[C语言程序设计视频教程(曾怡)]13csf|[C语言程序设计视频教程(曾怡)]12csf|[C语言程序设计视频教程(曾怡)]11csf|[C语言程序设计视频教程(曾怡)]10csf|[C语言程序设计视频教程(曾怡)]09csf|[C语言程序设计视频教程(曾怡)]08csf|[C语言程序设计视频教程(曾怡)]07csf|[C语言程序设计视频教程(曾怡)]06csf|[C语言程序设计视频教程(曾怡)]05csf|[C语言程序设计视频教程(曾怡)]04csf

现在执行的个人所得税是按9级超额累进税率进行计算。根据新的个人所得税计算规则,起征点提高到c=2000元。收入扣除2000元后:

不超过500元的部分,征收5%;

超500~2000元部分,征收10%;

超2000~5000元部分,征收15%;

超5000~20000元部分,征收20%;

超20000~40000元部分,征收25%;

超40000~60000元部分,征收30%;

超60000~80000元部分,征收35%;

超80000~100000元部分,征收40%;

超100000元以上的,征收45

以上就是关于c语言程序设计这道题,求求全部的内容,包括:c语言程序设计这道题,求求、C语言程序设计、endif,ifend,ifdefine,define,ifndefine这几个分别什么意思在数据结构编程里面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10121198.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存