① c语言编程问题
#include
<stdio.h>//缺少重要
头文件
#include
<string.h>#include
<stdlib.h>
int
SIZE;struct
student{
char
name[20];
int
xh;
int
yw;
//语文
int
sx;
//数学
int
yy;
//英语}*stud;
void
save();int
srsj();int
cxsj();int
main();int
gzcx();int
gzcx(){
int
i,a,b;
char
name[10]={0};
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("无法打开此文件\n");
}
printf("\t\t\t<学生信息查询>\n\n\n\t\t\t查看姓名,
学号
\n");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct
student),1,fp);
printf("\t\t%s\n\t\t%d\n\t\t%d\n\t\t%d",stud[i].name,stud[i].xh,stud[i].sx,stud[i].yw,stud[i].yy);
}
printf("\n\t\t***************************************\n");
printf("\t\t请输入数字:1:按学号查询\n
2:按姓名查询\n");
printf("\t\t***************************************\n");
printf("你输入的数字:");
scanf("%d\n",&b);
switch(b)
case
1:
{
printf("请输入工号,查看工资清单\n\n");
printf("工号:");
scanf("%d\n",&a);
printf("\t\t<学生信息查询>\n");
for(i=0;i<SIZE;i++)
{
if(stud[i].xh==a)
{
printf("\t\t%s\n\t\t%d\n",stud[i].name,stud[i].xh);
}
}
break;
case
2:
{printf("请输姓中文姓名,查看学生信息查询\n\n");
printf("姓名:");
scanf("%s",name);
for(i=0;i<SIZE;i++)
{
if(strcmp(name,stud[i].name)==0)
{
printf("\t\t%s\n\t\t%d\n",stud[i].name,stud[i].xh);
}
}
}
}
printf("\n");
printf("\n\n\t\t***************************************\n");
printf("\t\t注意:但无法查询时,请按要求操作!或者是无此数据!\n");
printf("\t\t***************************************\n\n\n\n");
fclose(fp);
main();
return
0;}
void
save(){
FILE
*fp;
int
i;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("cannot
open
file
\n");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct
student),1,fp)!=1)
fclose(fp);}
int
srsj(){
int
i;
int
SIZE;
printf("输入学生格式:");
scanf("%d",&SIZE);
stud=new
struct
student[SIZE];
for(i=0;i<SIZE;i++)
scanf("%s%d%d%d%d",stud[i].name,&stud[i].xh,&stud[i].sx,&stud[i].yw,&stud[i].yy);
save();
return
0;}
int
cxsj(){
int
i;
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannot
open
file\n");
}
for(i=0;i<SIZE;i++)
{fread(&stud[i],sizeof(struct
student),1,fp);
printf("\t\t姓名:%s\t\t学号:%d\n",stud[i].name,stud[i].xh);
}
fclose(fp);
return
0;}int
main() {
int
a;
printf("\t\t1:进入
输入数据
\n\t\t2:查询数据\n\t\t3:查询\n");
printf("输入数字:");
scanf("%d",&a);
if(a==1)
srsj();
if(a==2)
cxsj();
if(a==3)
gzcx();
return
0;//缺少返回}
② C语言下标如何表示
a1 - a10,保存在一个数字里面假设为 int a[10];你的a2i表示什么呢?是a[1](其实就是a2,下标从0开始)还是a[2 * i]呢,2 * i不可能,因为i 从1到10, 2 * 10就越界了,你的a21又是什么呢?只有10个元素(a1 - a10)你又如何有a21呢。。。。你的等式应该写错了。。。bi就用b[i - 1]表示(b是一个数组),如果等式是bi = (a2 * i - 1 + a2)/2,那就可以这么写for(int i = 1; i <= 10; ++i){ b[i] = (a[1] * i + a[1])/ 2;}b和a都是10个元素的数组。不过你应该是等式写错了。。
③ 几道C语言问题!!!
1.A
if (a=0)-->不成立. 因为a=0是赋值,相当于if(0)
if(a>0)-->不成立;所以执行y+=y
-->结果:y=20
***********************************************
2.有两个选择
D:有语法错误,因为while(!x)后缺分号.
若不是上面情况则选B.原因是:
x=-1*x--->x=-1
!x-->!(-1)-->!(true)-->false
结果:退出循环.仅循环一次.
***********************************************
3.A
该题关键是判断语句"i=10&&x>0".
i=10&&x>0-->i=(10&&x>0)-->i=(true && ture)-->i=true-->true
因此永远循环.
***********************************************
4.C
第1次:i=0-->判断成立(0<3)-->i=1(i++<3,指先比较i<3,再i加1)
第2次:判断成立(1<3)-->i=2
第3次:判断成立(2<3)-->i=3
第4次:判断不成立(3<3)-->i=4
退出
结果:i=4
***********************************************
5.没有合适答案.
执行后,y=1.原因如下:
第1次:y=1-->判断成立(1<=50)
-->if(x>=0)-->条件成立-->break-->退出循环(并不进行y++操作)
结果:y=1
***********************************************
6.C
a(a(i))-->a(a(10))-->a(9)-->6
数组第1个元素为a(0)=1,a(1)=4,...
***********************************************
7.D
i-->1字节
c-->2字节
a-->4字节
1+2+4=7
结果:字节总数为7字节.
***********************************************
8.B
应该:stu是用户定义的结构类型,而不是struc stu.
***********************************************
9.C
C语言中规定不能进行指针"加"操作.
***********************************************
10.D
第1次循环:
s指向"ABCD"中"A"位置,p指向"ABCD"中"B"位置.
printf输出"B"开始的字符串.
第2次循环:
p加1-->指向"ABCD"中"C"位置,判断成立(s指向"A"位置).
printf输出"C"开始的字符串.
第3次循环:
p加1-->指向"ABCD"中"D"位置,判断成立.
printf输出"D"开始的字符串.
第4次循环:
p加1-->指向"ABCD"中"D"后面,与s相关4个地址位,条件不成立.
退出.
输出结果:
BCD
CD
D
④ 在c语言中a等于多少
a的ASCII值十六进制为61,换成十进制就是97
⑤ C语言表达式 10&20 的值是什么
1、数据类型、运算符与表达式,2.1 预备知识; 2.2 C语言的数据类型; 2.3 常量和变量; 2.4 整型数据; 2.5 实型数据; 2.6 字符型数据; 2.7 算术运算与算术表达式; 2.8 赋值运算与赋值表达式; 2.9 逗号运算符和逗号表达式;,2.1 预备知识,计算机中数的表示及进制转换 二进制、八进制、十进制、十六进制 各种进制之间的转换,各种进制之间的转换(整数) 二进制、八进制、十六进制转换成十进制 方法:按权相加,十进制转换成二进制、八进制、十六进制 原理:,方法:连续除以基,从低到高记录余数,直至商为0,二进制与八进制之间的转换 二进制转换成八进制:从右向左,每3。
2、位一组(不足3位左补0),转换成八进制 八进制转换成二进制:用3位二进制数代替每一位八进制数,例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,二进制与十六进制之间的转换 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 十六进制转换成二进制:用4位二进制数代替每一位十六进制数,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,。
3、例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或1,数值的表示方法原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:。
4、原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1,负数补码转换成十进制数:最高位不动,其余位取反加1,例 补码:11111001 取反:10000110 加1: 10000111=-7,2.2 数据类型 数据类型总表,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,2.3 常量和变量,2.3.1 常量 1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。 2.常量的分类 (1)整型常量 例:123 (2)实型常量 例:4.56 (3)字符常量 例:a (4)符号常量 例:PI,2.3.2 变量 1.变量的概念 在程序运行过程。
5、中,其值可以被改变的量称为变量。 2.变量的两个要素 (1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,.标识符命名规则 有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。 有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。 例如:由于student_name和student_number的前个字符相同,有的系统认为这两个变量,是一回事而不加区别。 在TC V2.0中,变量名(标识符)的有效长度为个字符,缺省值为。,C语言的关键字不能用作变量名。 。
6、注意:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。 习惯上,变量名和函数名中的英文字母用小写,以增加可读性。 例:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?,标识符命名的良好习惯见名知意: 所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。 例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。,4.变量的定义与初始化 在语言中,要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行。
7、赋初值的操作为变量初始化。,2.4 整型数据,2.4.1 整型常量 整型常量即整常数,在语言中可用三种形式表示: (1)十进制。例如10、36。 (2)八进制(以数字开头)。例如012。 (3)十六进制(以数字+小写字母x开头)。例如0 x36。,2.4.2 整型变量 1.分类 根据占用内存字节数的不同,整型变量又分为类: (1)基本整型(类型关键字为int)。 (2)短整型(类型关键字为short int)。 (3)长整型(类型关键字为long int)。 (4)无符号整型。无符号型又分为无符号基本整型(unsigned int)、无符号短整型(unsigned short)和无符号长整型(。
8、unsigned long)三种,只能用来存储无符号整数。,2.占用内存字节数与值域 上述各类型整型变量占用的内存字节数,随系统而异。在16位操作系统中,一般用字节表示一个int型变量,且long型(字节)int型(字节)short型(字节)。 显然,不同类型的整型变量,其值域不同。 例:PC机中的一个int型变量,其值域为-215(215-1),即-3276832767;一个unsigned型变量的值域为:0(216-1),即065535。 可用sizeof(类型标识符)测量。,如何定义整型变量? int i;/*定义为整型变量*/ i10; /*给i赋以整数10*/ int a10; sh。
9、ort b30; long c 20; unsigned int number20;,例:,#define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,2.5 实型数据,2.5.1 实型变量 语言的实型变量,分为两种: (1)单精度型。类型关键字为float,一般占字节(位)、提供位有效数字。 (2)双精度型。类型关键字为double,一般占个字节、提供1516位有效数字。,例 float a; a=111111.111; /* a=111111.1*/ double b; b。
10、=111111.111; /* b=111111.111*/,2.5.2 实型常量 实型常量即实数,在语言中又称浮点数,其值有两种表达形式: (1)十进制形式。例如3.14、9.8。 (2)指数形式: (e或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,例:,#define PRICE 30.52 main() float num,total; num=10.89; total=num*PRICE; printf(“total=%f”, total); ,2.6 字符型数据,2.6.1 字符常量 字符常量的定义 用一对单引号括。
11、起来的单个字符,称为字符常量。 例如,如 a A ? n 101 字符常量的值:该字符的ASCII码值 如 A65, a97, 048 , n10 转义字符 反斜线后面跟一个字符或一个代码值表示 如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: main() printf(“ ab ct derftgn”); printf(“htibbj k”); ,例 转义字符举例 main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); 。
12、,2.6.2 字符变量 字符变量的类型关键字为char,一般占用1字节内存单元。 变量值的存储字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。 例如, char ch1, ch2; /*定义两个字符变量:ch1,ch2*/ ch1=a; ch2=b; /*给字符变量赋值*/,一个字符型数据,既可以字符形式输出,也可以整数形式输出。,main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,c。
13、h1,ch2); ,main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小写转换*/ printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); /*用字符形式输出一个大于256的数值*/ printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); ,字符常量与字符串常量不同,字符串常量 定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字。
14、符串结束标志,例: char ch; ch=“A”;,不同类型数据间的转换,除上面讲的自动转换外,还有强制转换。 例如, (double)a (等价于(double)(a) /*将变量a的值转换成double型*/ (int)(x + y) /*将x+y的结果转换成int型*/ (float)5 / 2(等价于(float)(5)/2) /*将5转换成实型,再除以2(=2.5)*/ (float)(5 / 2) /*将5整除2的结果(2)转换成实型(2.0)*/,2.7 算术运算与算术表达式,1.五种基本算术运算符 +、-、*、/、% (1)关于除法运算/ C语言规定:两个整数相除,其商为整数。
15、,小数部分被舍弃。例如,5 / 2 = 2。 (2)关于求余数运算 要求两侧的操作数均为整型数据,否则出错。,2.运算符的优先级与结合性 1)按运算符的优先级高低次序执行。例如,先乘除后加减。 2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行。 例如,算术运算符的结合方向是“自左至右”,即:在执行“a b + c”时,变量b先与减号结合,执行“a - b”;然后再执行加c的运算。,3.自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或。
16、i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,说明: + - 不能用于常量和表达式,如5+,(a+b)+ 优先级: + - -* / % -+ -,2.8 赋值运算与赋值表达式,1.赋值运算 赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。,例 a=3; d=func(); c=d+2; y = (float)5 /。
17、 2;,2.复合赋值运算 C语言规定的10种复合赋值运算符如下: +=,-=,*=,/=,%=; a+b=3;,例 float f; int i; i=10; f=i; 则 f=10.0,例 int i; i=2.56; /结果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/ b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,2.9 逗号运算符和逗号表达式,形式:表达式1,表达式2,表达式n 结合性:从左向右 逗号表达式的值:等于表达式n的值 用途:常用于循环for语句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3。
⑥ C语言如何一次声明a1 到 a10
在计算机或者现实中,我们每做一件事情都有做这件事情的目的,不是盲目的去干。
这里一次声明a1到a10的目的何在,在什么地方使用,还是就是简单的看语法,如果简单的看语法就完全没有必要了,如果有作用最好定义一个结构体,这样这些变量的地址空间在一起便于程序运行。或者定义一个数组存储这些变量的值。
⑦ c语言中s=average( a10)为什么是 s
s只是变量名,自定义变量的时候起的名字,只要符合命名规则,起什么名字都行。
average这是一个函数名,从代码看s是用来接收函数average返回值的。
⑧ 1'在c语言中是多少
1'是一个逻辑非表达式。是C语言中的逻辑非运算符。C语言中的逻辑运算值是用0/1来代替的。0为假,1为真。非0值也为1。所以,!1 是一个逻辑非表达式。
C语言中有些符号,大多数人都不知道是什么意思,比如!1就是其中一个,其实!1 是一个逻辑非表达式。感叹号!是C语言中的逻辑非运算符。
C语言是没有boolean数据类型的,所以也就没有true,false这样的值,除非你去宏定义一个。C中的逻辑运算值是用0/1来代替的。0为假,1为真。非0值也为1。所以,!1 是一个逻辑非表达式。
在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显着。
优点:
1.C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试。
2.C语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建。
3.通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。
缺点:
1. C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
⑨ C语言各类型数据的位数是多少
这个跟系统有关的,你可以通过sizeof各个类型来看字节数,从而算出位数。具体可以用以下代码看
#include<stdio.h>
void main()
{
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long int));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
}
一般我们用的32位系统是:
类型 字节数 位数 范围
int 4 32 -2147483648 ~ 2147483647
long 4 32 同上
float 4 32 -2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38
double 6 64 -2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308