运算符分类
1.算术运算符
2.关系运算符
3.逻辑运算符
4.位运算符
5.特殊运算符
优先级
作业:
1、编写一个程序,此程序要求输入一个整数,然后打印出从输入的值(含)到比输入的值大 10(含)的所有整数值(比如输入 5,则输出 5 到 15)。要求在各个输出值之间用空格、制表符或者换行符分开。
#include<stdio.h>
int main()
{
printf("输入一个整数\n");
unsigned int a;
scanf("%d",&a);
printf("输出该整数后10位\n");
for (int i = 0; i < 10; i++)
{
printf("%d\n",a+i);
}
return 0;
}
2 、写出下面表达式运算后 a 的值,设原来 a=12。设 a 和 n 已定义为整型变量。
a += a
24
a -= 2
10
a *= 2+3
60
a /= a+a
0
a %= (n%2),n 的值为 5
0
a += a -= a *= a
0
3.编写一个程序,该程序要求输入一个 float 型数并打印概述的立方值。使用你自己设计的函数来计算该值 的立方并且将它的立方打印出来。main 函数负责把输入的值传递给该函数。
#include<stdio.h>
float lifang(float a)
{
float b;
b=a*a*a;
return b;
}
int main()
{
printf("输入一个浮点数\n");
float a;
scanf("%f",&a);
a=lifang(a);
printf("%f\n",a);
return 0;
}
4.编写一个程序,此程序要求输入天数,然后将该值转换为星期数和天数。例如输入 18,则要求输出: 18 days are 2 weeks, 4days.
#include<stdio.h>
int main()
{
printf("输入一个天数\n");
int a;
scanf("%d",&a);
printf("%d days are %d weeks,%d days",a,a/7,a%7);
return 0;
}
5、分析并解释以下程序的执行结果。
#include <stdio.h>
int main(void)
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);
return 0;
}
#include<stdio.h>
int main(){
char a=123;
char b1=234;
unsigned char b2=234;
printf("a:%d\nb:%d\nb:%d\n",a,b1,b2);
return 0;
}
#include<stdio.h>
int main(){
int a1=1,a2=1,a3=1,a4=1,*a9,a12=1,a13=1;
char a5=100,*a6="xy",*a10="abcdefghijk",a15=1;
float a7=1.0,a8=1.0,a11=1.0;
short a14=1;
double a16=1.0;
long double a17=1.0;
//-------------------
printf("%d\n",a1);
printf("%u\n",a2);
printf("%o\n",a3);
printf("%x\n",a4);
printf("%c\n",a5);
printf("%s\n",a6);
printf("%f\n",a7);
printf("%e\n",a8);
printf("%p\n",a9);
printf("%.5s\n",a10);
printf("%.5f\n",a11);
printf("%5d\n",a12);
printf("%-5d\n",a13);
printf("%hd\n",a14);
printf("%hhd\n",a15);
printf("%lf\n",a16);
printf("%Lf\n",a17);
// char var1;
// printf("输入一个整型");
// scanf("%d",&var1);
// printf("%d\n",var1);
// printf("%u\n",var1);
// printf("%o\n",var1);
// printf("%x\n",var1);
// printf("%c\n",var1);
// printf("%s\n",var1);
// printf("%f\n",var1);
// printf("%e\n",var1);
// printf("%p\n",var1);
// printf("%.5s\n",var1);
// printf("%.5f\n",var1);
// printf("%5d\n",var1);
// printf("%-5d\n",var1);
// printf("%hd\n",var1);
// printf("%hhd\n",var1);
// printf("%lf\n",var1);
// printf("%Lf\n",var1);
}
#include<stdio.h>
int main()
{
unsigned short var1=0x1234;
unsigned char var1_high8=(var1<<8)>>8;
unsigned char var1_low8=var1>>8;
printf("高%u 低%u\n",var1_high8,var1_low8);
unsigned short var2=var1_low8+var1_high8;
printf("%u\n",var2);
return 0;
}
#include<stdio.h>
int main()
{
printf("输入一个整数\n");
unsigned int a;
scanf("%d",&a);
printf("输出该整数后10位\n");
for (int i = 0; i < 10; i++)
{
printf("%d\n",a+i);
}
return 0;
}
#include<stdio.h>
float lifang(float a)
{
float b;
b=a*a*a;
return b;
}
int main()
{
printf("输入一个浮点数\n");
float a;
scanf("%f",&a);
a=lifang(a);
printf("%f\n",a);
return 0;
}
#include <stdio.h>
int main(void)
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);
return 0;
}
#include<stdio.h>
int main()
{
char a1;
unsigned a2;
signed char a3;
int a4;
unsigned int a5;
short a6;
unsigned short a7;
long a8;
unsigned long a9;
long long a10;
double a11;
float a12;
printf("char:%ld\n",sizeof(a1));
printf("unsigned:%ld\n",sizeof(a2));
printf("signed char:%ld\n",sizeof(a3));
printf("int:%ld\n",sizeof(a4));
printf("unsigned int:%ld\n",sizeof(a5));
printf("short:%ld\n",sizeof(a6));
printf("unsigned short:%ld\n",sizeof(a7));
printf("long:%ld\n",sizeof(a8));
printf("unsigned long:%ld\n",sizeof(a9));
printf("long long:%ld\n",sizeof(a10));
printf("double:%ld\n",sizeof(a11));
printf("float:%ld\n",sizeof(a12));
}
#include<stdio.h>
int main()
{
int a=9527;
int b=a-(a/1000)*1000,b1=b-(b/100)*100;
printf("%d %d %d %d \n",a/1000,b/100,b1/10,b1%10);
printf("-----------\n");
printf("%d %d %d %d \n",a/1000,a/100%10,a/10%10,a/1%10);
printf("-----------\n");
int c=12;
int d =++c;
d++;
printf("%d\n",c++);
printf("%d\n",++d);
printf("%d\n",c);
return 0;
}
#include<stdio.h>
int main()
{
int a=12,n=5;
// printf("%d",a+=a-=a*=a);
printf("%d",a%=(n%2));
return 0;
}
#include<stdio.h>
int main()
{
unsigned long long int a=0x12345678;
unsigned char var_low,var_high,var_low2,var_high2;
var_low=(a>>0)&0xFFFFFFFF;
var_high=(a>>8)&0xFFFFFFFF;
var_low2=(a>>16)&0xFFFFFFFF;
var_high2=(a>>24)&0xFFFFFFFF;
// printf("var_low:%hhX\n",var_low);
// printf("var_high:%hhX\n",var_high);
// printf("var_low2:%hhX\n",var_low2);
// printf("var_high2:%hhX\n",var_high2);
printf("0x%hhX%hhX%hhX%hhX\n",var_low,var_high,var_low2,var_high2);
return 0;
}
#include<stdio.h>
int main()
{
unsigned int a=0x56;//(7654 3210)
unsigned char a1,a2;
// a1=a;
// a1=a1|(1<<0);
// a1=a1|(1<<5);
// a1=a1|(1<<7);
a1=a|(1<<0)|(1<<5)|(1<<7);
a2=a1&(~(1<<1))&(~(1<<4))&(~(1<<6));
printf("%hhX\n",a2);
return 0;
}
#include <stdio.h>
int main(void)
{
int ascii;
printf("请输入一个ASCII码值:");
scanf("%d",&ascii);
printf("ASCII码值为 %d 对应的字符是 %c\n",ascii,ascii);
return 0;
}
#include<stdio.h>
int main(){
int arr[4]={};
int id1,id2;
float score1,score2;
char *name1="tom",*name2="jerry",sex1,sex2;
//-------------------
printf("依次输入id,sex,score");
scanf("%d %c %f",&id1,&sex1,&score1);
scanf("%d %c %f",&id2,&sex2,&score2);
//-------------------------------
printf("ID\tSEX\tNAME\tSCORE\n");
printf("%d\t%c\t%s\t%.1f\n",id1,sex1,name1,score1);
printf("%d\t%c\t%s\t%.1f\n",id2,sex2,name2,score2);
return 0;
}
#include<stdio.h>
#include<string.h>
char S[100][1000]={' '};//声明表为全局变量
int s1=0;
void chart(int n,int a[],int m);
int main()
{
int n;
int M1[40]={0},M2[40]={0},M3[40][100]={0};
int i,j,k,k1,k2,max=0,col,l;
char s[30][1000];
scanf("%d",&n);
getchar();//注意,必须得有这个来接收回车符
//
for(i=0;i<n;i++)
// scanf("%s", &s[i]);
// gets(s[i]);
fgets(s[i],100,stdin);
//求最大列数
for(i=0;i<n;i++)
{
l=strlen(s[i]);
for(j=0;j<l;j++)
{
if(s[i][j]==',')
M1[i]++;
}
if(M1[i]>max)
{
max=M1[i];
}
}
col=++max;
//求每列最大宽度
//1.先求每个单元的长度,赋给M3[i][j]中
for(i=0;i<n;i++)
{
l=strlen(s[i]);
k=0;
for(j=0;j<l;j++)
{
if(s[i][j]!=',')
{
M3[i][k]++;
}
if(s[i][j]==',')
k++;
} //for2
}//for1
//2.找每列最大的赋予M2[]
for(j=0;j<col;j++)
{
max=0;
for(i=0;i<n;i++)
{
if(M3[i][j]>max)
max=M3[i][j];
}
M2[j]=max;
}
//表格
chart(n,M2,col);
//输入数据
for(i=0;i<n;i++)
{
k1=0;
k2=0;
k=0;
l=strlen(s[i]);
for(j=0;j<l;j++)
{
S[2*i+1][k2+1]=s[i][j];
if(s[i][j+1]==',')
{
k1=k1+M2[k]+1;
k2=k1;
k++;
j++;
}
else
k2++;
}
}
//输出表格
for(i=0;i<=2*n;i++)
{
for(j=0;j<s1;j++)
printf("%c",S[i][j]);
printf("\n");
}
return 0;
}
void chart(int n,int a[],int m)//行数 每列的最大长度数组
{
int i,j,k;
int s;
s1=m+1;
for(i=0;i<m;i++)
s1+=a[i];
for(i=0;i<=2*n;i++)
{
//输出奇数行
if(i%2==0)
{
s=0;
k=0;
for(j=0;j<s1;j++)
{
if(j==s)
{
S[i][j]='+';
s+=a[k];
s++;
k++;
}
else
S[i][j]='-';
}//for
} //if
//输出偶数行
else
{
s=0;
k=0;
for(j=0;j<s1;j++)
{
if(j==s)
{
S[i][j]='|';
s+=a[k];
s++;
k++;
}
}
}
} //for
}
#include<stdio.h>
#include <string.h>
int people=0;
struct kid
{
char name[50]; //姓名
int height; //身高
char sex[50]; //性别
long long num; //学号
};
void shuru(struct kid stu[50])
{
int i=0;
char v[50]={0}; //清空缓存区
struct kid *p = stu;
for(i=0;i<50;i++)
{
printf("\n请输入学生信息\n");
printf(" 名字 ");
scanf("%s",(p+people)->name);
printf(" 学号 ");
scanf("%lld",&(p+people)->num);
printf(" 性别 ");
scanf("%s",(p+people)->sex);
printf(" 身高 ");
scanf("%d",&(p+people)->height);
people++;
printf("输入完毕\n回车继续输入");
printf(" *键退出");
while(1)
{
getchar(); //(取地址)去掉输入完多出的回车符号
// gets(v);
fgets(v,100,stdin);
//scanf("%[\n]",v);
if(strcmp(v,"")==0)
{
//getchar();
break;
}
if(strcmp(v,"*")==0)
{
printf("\n已退出!");
return ;
}
}
}
}
void chaxun(struct kid stu[50])
{
char name[50];
struct kid *p = stu;
int i=0;
if(strcmp(p->name,"")==0)
{
printf("对不起\n当前无录入的学生\n");
return ;
}
while(1) //用while循环,使可以不间断输入
{
printf("请输入查询学生姓名\n退出查询请按A\n");
scanf("%s",name);
for(i=0;i<people;i++)
{
if(strcmp((p+i)->name,name)==0)
{
printf("学生信息\n 序号: %d\n 姓名: %s\n 学号: %lld\n 性别: %s\n 身高: %d\n",i,(p+i)->name,(p+i)->num,(p+i)->sex,(p+i)->height);
printf("======================================================================\n");
break;
}
if(i==people-1)
{
printf("查无此人!\n");
break;
}
}
if(strcmp(name,"A")==0) //设定输入字符A退出
{
return ;
}
}
}
void shanchu(struct kid stu[50] )
{
char name[50];
struct kid *p = stu;
int i=0;
//int j=0;
if(strcmp(p->name,"")==0)
{
printf(" 对不起!!\n 无学生\n");
return ;
}
printf(" 你就说你想搞谁吧! \n");
scanf("%s",name);
for(i=0;i<people;i++)
{
if(strcmp((p+i)->name,name)==0)
{
printf("学生信息\n 序号: %d\n 姓名: %s\n 学号: %lld\n 性别: %s\n 身高: %d\n",i,(p+i)->name,(p+i)->num,(p+i)->sex,(p+i)->height);
printf("======================================================================\n");
while(strcmp((p+i)->name,"")!=0)
{
strcpy((p+i)->name,(p+i+1)->name);
(p+i)->height=(p+i+1)->height;
strcpy((p+i)->sex,(p+i+1)->sex);
(p+i)->num=(p+i+1)->num;
i++ ;
}
people--;
printf(" ok!现在ta没了!! \n");
break;
}
if(i==people-1)
{
printf(" 哟!还跟我来这套!没这人 \n");
break;
}
}
}
void paixu(struct kid stu[50])
{
struct kid temp;
int i,j;
char a ;
printf("学生信息\n 姓名\t\t学号\t\t性别\t\t身高\n");
for(i=0;i<people;i++)
{
for(j=i+1;j<people;j++)
if(stu[i].height<stu[j].height)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
printf("\n%10s\t\t %lld\t\t%s\t\t%d\t\t\n" ,stu[i].name,stu[i].num,stu[i].sex,stu[i].height);
}
//getch(); 用man手册查询头文件无法使用,上面gets同样,版本不支持
/*printf("是否保存?yes or no");
getchar();
scanf("%c",&a);
if(a=='yes')
save();
printf("保存成功");
else
printf("退出");
getch();
*/
}
void xingxi(struct kid stu[50]/*, char*p*/ )
{
struct kid *p = stu;
char name[50];
int i=0;
if(strcmp(p->name,"")==0)
{
printf("对不起\n当前无录入的学生\n");
return ;
}
for(i=0;i<people;i++)
{
printf("学生信息\n 序号: %d\n 姓名: %s\n 学号: %lld\n 性别: %s\n 身高: %d\n",i,(p+i)->name,(p+i)->num,(p+i)->sex,(p+i)->height);
printf("======================================================================\n");
}
}
int main ()
{
struct kid stu[50]; //定义一个结构体数组 保存 50个学生
struct kid *p = stu;
while(1) //循环体
{
printf("1.录入学生信息 2查询学生 3删除学生信息 4排序(按身高) 5显示所有学生信息\n"); //设置标题
int a = 0;
while(1)
{
int ret = scanf("%d",&a); //键盘录入信息,&取变量地址
if(ret == 1 && a>=1 && a<=5 && getchar()=='\n')
{
break;
}
else printf(" 大哥!你打错了!\n 重新输入吧你!\n");
while(getchar()!='\n');
}
switch(a)
{
case 1:
{
shuru(stu);
break;
}
case 2:
{
chaxun(p);
break;
}
case 3:
{
shanchu(p);
break;
}
case 4:
{
paixu(stu);
break;
}
case 5:
{
xingxi(p);
break;
}
/*default: //输入非整型会出现持续打印
{
printf("输入错误\n请重新输入\n");
break ;
}
return 0;*/
}
}
}