大家好,今天小编来为大家解答c语言程序网这个问题,C语言程序设计教程很多人还不知道,现在让我们一起来看看吧!
一、c语言用什么软件编写
1、TurboC是由美国Borland公司开发的一套C语言程序开发工具,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套Turbo系列软件,如TurboBASIC、TurboPascal、TurboProlog,这些软件很受用户欢迎。TurboC集成了程序编辑、调试、链接等多种功能。
2、WIN-TC是一个TC2WINDOWS平台开发工具。该软件使用TC2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、复制、粘贴和查找替换等。
二、求C语言编程题
1、编制程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数字之和。
printf("\n%d",(a*a+b*b)/100);
2、试编程判断输入的正整数是否既是5又是7的整数倍数。若是,则输出yes;否则输出no。
1、编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔的输出该串,请用指针完成。
2、输入一个字符串string,然后在string里面每个字母间加一个空格,请用指针完成。
string=(char*)malloc(max*sizeof(char));
copyString=(char*)malloc(2*max*sizeof(char));
while(*copyString!='\0')
char acY[ ]={'a','b','c','d','e','f','g'};
A)数组acX和数组acY等价 B)数组acX和数组acY的长度相同
C)数组acX的长度大于数组acY的长度 D)数组acX的长度小于数组acY的长度
printf("%d", sizeof(acHello));
example(acHello);//数组名称作参数,传的是地址,一个地址占四个字节
for(pcPtr= acArr; pcPtr< acArr+ 5; pcPtr++)
4.在中断中,不能同步获取信号量,但是可以释放信号量。
A)在不同的函数中可以使用相同名字的变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
unsigned long pulArray[]={6, 7, 8, 9, 10};
printf("%d,%d\n",*pulPtr,*(pulPtr+ 2));
7.定义结构体时有下面几种说法,请指出正确的(多选):______
A、结构体中的每个部分,最好进行四字节对齐;
B、结构体的总长度最好是四字节对齐;
C、结构中成员的存放不用考虑字节对齐情况;
printf("%d\n", strlen(acNew));
9.switch(c)中的c的数据类型可以是char、long、float、unsigned、bool.()
10.网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是
大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。
printf("%s\n",(*p).name);
struct stu students[3]={{9801,"Zhang",20},
A) Zhang B)Zhao C) Wang D) 18
12.以下程序运行后,输出结果是()
C"abcde"这个常串中字符c所在的地址 D出错
A) 3839 B) 3938 C) 380039 D)不可预知
14.全局变量可以定义在被多个.C文件包含着的头文件中。
char acNew[20]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
printf("%d\n", strlen(acNew));
E: char pc[]={'a','b','c','d','\0'};
F: char pc[]='a''b''c''d';
17.在函数内部定义的变量(静态变量、寄存器变量等特殊变量除外)的内存是在栈内存中,所以在定义函数内部的变量的时候,一定要保证栈不能够溢出。如果临时变量
占用空间较大,应该使用内存申请的方式,这样该变量指向的内存就是在堆内存中了。
18.局部变量可以和全局变量重名,编译的时候不会出现错误,但一旦不小心,就可能导致使用错误变量,所以在定时局部变量的时候,不要和全局变量重名。
#define Y(n)((N+1)*n)/*这种定义在编程规范中是严格禁止的*/
则执行语句:z= 2*(N+ Y(5+ 1));后,z的值为()
A) ptr是指向一维组数的指针变量
B) ptr是指向int型数据的指针变量
C) ptr是指向函数的指针,该函数返回一个int型数据
D) ptr是指向函数的指针,该函数的返回值是指向int型数据的指针
21. 0x12345678在采用BigEndian中内存的排列顺序是______,在采用LittleEndian内存中的排列顺序是_______.
(答案从左到右内存地址依次增加)
问:AAA_S在字节对齐分别为1、4的情况下,占用的空间大小是多少?
四字节对齐方式时: sizeof(TEST_S)= ______, sizeof(test)________.
char acHello[]="hello\0world";
4.#pragma pack(4)/*编译选项,表示4字节对齐*/
int main(int argc, char* argv[])
printf("%d%d%d", sizeof(stT1), sizeof(stT2), sizeof(stT3));
#pragma pack()(编译选项结束)
请问 enumA= ____; enumB= ______;
6.以下程序的输出结果是________.
7.以下程序的输出结果为________
#define CIR(r) r*r/*请注意这种定义的缺陷,不允许这么定义*/
8.在VRP中,实现了strncpy类似的函数,定义如下:
#define MACRO_COPYWORLDLENGTH 4
CHAR*VOS_strncpy(CHAR*pcDest, const CHAR*szSrc, ULONG ulLength)
if(( NULL== szSrc)||( NULL== pcDest)))
while(ulLength&&(*pcPoint=*szSrc))/*这里采用了在判断语句中赋值的方式(*pcPoint=*szSrc),建议尽量不使用*/
CHAR szStrBuf[ ]="1234567890";
CHAR szStrBuf1[ ]="1234567890";
CHAR*szHelloWorld="Hello World!";
strncpy(szStrBuf, szHelloWorld, MACRO_COPYWORLDLENGTH);
VOS_strncpy(szStrBuf1, szHelloWorld, MACRO_COPYWORLDLENGTH);
printf("%s%s", szStrBuf, szStrBuf1);
char acHello[]="hello\0world";
在强制一字节对齐情况下,请指出sizeof(HEAD_S)= ________;
在强制二字节对齐情况下,请指出sizeof(HEAD_S)= ________;
在强制四字节对齐情况下,请指出sizeof(HEAD_S)= ________;
在字节对齐为1下,sizeof(union tagAAAA)、sizeof(struct tagBBBBB)、sizeof(struct tagCCCC)是____ ____ _____
在字节对齐为4下,sizeof(union tagAAAA)、sizeof(struct tagBBBBB)、sizeof(struct tagCCCC)是____ ____ _____
那么pAbc+0x100= 0x_________;(ULONG)pAbc+ 0x100= 0x_________;(ULONG*)pAbc+ 0x100= 0x_________;(char*)pAbc+ 0x100= 0x_______;
答案:100C00 100100 100400 100100
13.unsigned long FUNC_C( unsigned long ulAction)
printf("ulResult=%u", ulResult);
当输入为ACTION_B时,输出结果为: ulResult= _________;
答案:2(因为此分支没有break分支)
14.下面的代码中,函数Test执行完毕后,打印的结果是 _____。
void GlobalInit(unsigned long ulArg)
15.以下程序的输出的结果是___________
16.以下程序的输出的结果是___________
int main(int argc, char* argv[])
pstPimData=(struct tagPIM*)puc;
printf("%02X%02X%02X%02X\n", puc[0], puc[1], puc[2], puc[3]);
#pragma pack()/*恢复缺省对齐方式*/
char str[]="\\\0";
19.UCHAR*pucCharArray[10][10];
四字节对齐方式时: sizeof(pucCharArray)= __指针的数组,每个指针的地址都是4字节____, sizeof(stMax)=_______, sizeof(pstMax)=__地址______,sizeof(*pstMax)=________.
在强制一字节对齐情况下,请指出sizeof(HEAD_S)= ________;
在强制二字节对齐情况下,请指出sizeof(HEAD_S)= ________;
在强制四字节对齐情况下,请指出sizeof(HEAD_S)= ________;
请问 sizeof(pszTest)= _____, sizeof(*pszTest)= ______, sizeof(aucTest)= ______.
(unsigned long)p+ 0x1= 0x______
(unsigned long*)p+ 0x1= 0x______
答案:100018 100001 100004 100001
void main(int argc, char*argv[])
printf("\r\n sizeof(stMax)=%d",sizeof(stMax));
unsigned long ulA= 0x11000000;
printf("\r\n%x",*(unsigned char*)&ulA);
三、指出下列程序中导致不能出现预期结果的唯一错误(不考虑编程规范错误)
1.下面程序用于输出用户输入的字符串。请指出其中的问题
int GetMemory(char**ppszBuf, int num)
if(OK== GetMemory(&pcStr, BUFFER_SIZE))
scanf("%s",pcStr);/*这里假定BUFFER_SIZE足够大,不会导致越界*/
答案:要采用printf("%s", str)的形式打印,否则如果输入为%s,%d等形式可能会导致不可知现象。
2.此函数实现把32位IP地址(主机序)以字符串的方式打印出来,请找出代码中的错误:
char*IpAddr2Str(unsigned long ulIpAddr)
(void)VOS_sprintf(szIpAddr,"%d.%d.%d.%d", ulIpAddr>> 24,
(ulIpAddr>> 16)& 0xff,(ulIpAddr>> 8)& 0xff, ulIpAddr& 0xff);
答案:函数的局部变量是存放在堆栈中的,此函数返回了堆栈中的地址,函数退出后堆栈中的内容不可用。
3.如下程序用于输出"Welcome Home"。请指出其中的错误:
strcpy(pcArray,"Welcome Home");
4.如下程序用于把"blue"字符串返回,请指出其中的错误:
pcNewColor=(char*)malloc(strlen(pColor));
答案:申请内存空间不足,字符串结尾还有'\0'。
5.下面程序期望输出str= hello world,请指出其中的错误:
printf("\r\n str=%s",str);
答案:无法返回字符串,参数使用错误。
三、急求C语言的编写程序
(1)为了方便验证减少不必要的重复输入,这里我用了随机数产生成绩,姓名和学号用了默认值(只有前10个,此时超过前10个则会为空),你可以按注释的提示稍加修改,即可以进行人工的输入,输入多少即为多少个了。
建议如果不是手工的输入,而是进行验证程序,开始可输入小于等于10的学生个数
(2)因为验证用了默认的数据,故为了对比输入的数据和排序后的数据的异同,在输入完成和排序完成后进行了两次输出,便于比对。
#include"time.h"//这两个头文件的引入是为了随机数和随机数种子
void av(float student[N+1][b]){//求每个人总成绩并保存入数组
student[i][b-1]+=student[i][j];
void sum(float student[N+1][b]){//求所有人某科总成绩并保存
student[a-1][3]+=student[i][3];
student[a-1][1]+=student[i][1];
student[a-1][2]+=student[i][2];
student[a-1][0]+=student[i][0];
void input(float student[N+1][b]){//输入
/*printf("依次输入第%d个人语、数、外每科成绩:",i+1);*/
student[i][j]=rand()%50+51;//此处为了方便检验程序,用了随机数来代替了手工的输入,想输入只需注释此句,将/**/注释的两句取消注释即可。如果是手工的输入,最好是一个人的不同科成绩用空格分开,输入完一个人的三门成绩后,敲回车继续下一个人的成绩
/*scanf("%d",&student[i][j]);*/
void sort(float student[N+1][b],char name[N][20],char number[N][20]){//最简单的选择排序
for(j=i+1;j<a-1;j++)//每次找出一个最大的值放到合适的位置
if(student[max][b-1]<student[j][b-1])
student[i][j]=student[max][j];
strcpy(number[i],number[max]);
void myprint(float student[N+1][b],char name[N][20],char number[N][20]){//输出结果
printf("次序----学号------姓名------高数------英语-----C语言--三科总成绩--个人平均成绩\n\n");
printf("%10.1f",student[i][j]);
printf("%12.2f",student[i][b-1]/(float)(b-1));
printf("各科平均分对应为:%15.2f%10.2f%10.2f%10.2f\n\n",student[a-1][0]/(float)(a-1),student[a-1][1]/(float)(a-1),student[a-1][2]/(float)(a-1),student[a-1][3]/(float)(a-1));
char name[N][20]={"张三","李四","王五","赵六","刘七","马八","大毛","二毛","三毛","小毛"};
char number[N][20]={"20070201","20070202","20070203","20070204","20070205","20070206","20070207","20070208","20070209","20070210"};
/*printf("请输入学生的学号和姓名:\n");/为了验证方便,所以使用了默认值。如果要自己输入可以去掉int i行和此行到for结束部分注释内容即可输入学生的姓名和学号
printf("\n\n输入的各同学的成绩如下所示:\n\n");
printf("\n\n按降序排序后各同学的成绩如下所示:\n\n");
程序写的较简单,只是加了必要的注释,相信你一定可以看明白的,呵呵
如果你还想了解更多这方面的信息,记得收藏关注本站。