C语言程序解释!

作者&投稿:爱新觉罗壮 (若有异议请与网页底部的电邮联系)
C语言程序解释~

主函数#include"stdio.h" /*定义数据stdio类型*/
#include"string.h" /*定义数据string类型*/
#include"malloc.h" /*定义数据malloc类型*/
#define LEN sizeof(student) /*定义一个名为student的数据表*/
typedef struct student /*创建一个学生表的结构类型*/
{ int number; /*学号*/
char name[20]; /*姓名,类型为char长度为20*/
char jiguan[20]; /*籍贯,类型为char长度为20*/
struct student *next; /*下一个*/
}student;
student *head; /*头文件*/
void read_file(); /*声明一个读文件*/
void write_file(); /*声明一个写文件*/
void add_student(); /*声明一个增加学生信息*/
void delete_student(); /*声明一个删除学生信息*/
void change_student(); /*声明一个修改学生文件信息*/
void find_number(); /*声明一个查找编号*/
void list();
void myfree();
main() /*调用主函数*/
{ int chose, single=1; /*定义 数据类型 值为1*/
system ("cls");
head=(student *)malloc(LEN); /*调用学生数据表*/
head->number=0; /*假如编号是0*/
strcpy(head->name,""); /*查找name函数*/
strcpy(head->jiguan,""); /*查找jiguan函数*/

head->next=NULL;
while(single)
{ system("cls");
printf("





"); /*打印换行*/
printf ("***********************************************
");
printf("**************学生基本信息管理系统************
");
printf("********************主菜单*********************
"); printf("***********************************************
");
printf("* 1------------------输入*
");
printf("* 2------------------删除*
");
printf("* 3------------------修改*
");
printf("* 4------------------查询*
");
printf("* 5------------------输出*
");
printf("* 0------------------退出*
"); printf("***********************************************
");
printf("请输入您所选择的序号:");
scanf("%d",&chose);
getchar();
switch(chose){
case 1:add_student();break;
case 2:delete_student();break;
case 3:change_student();break;
case 4:find_number();break;
case 5:list();break;
case 0:single=0;break;
default:printf("
选项不存在,重新输入!

");
}
}
}
功能函数void change_student()
{ int number;
char name[20];
char jiguan[20];
char a;
student *t;
system("cls");
printf("修改学生信息:

");
read_file();
printf("*****************************************

");
printf("输入要修改学生的学号(10位):");
scanf("%d",&number);
t=head->next;
while(t)
{if(t->number==number)
{ break;
}
t=t->next;
}
if(t)
{printf("%10d %20s %20s

",t->number,t->name,t->jiguan);
printf("新姓名:");
scanf("%s",name);
printf("新籍贯:");
scanf("%s",jiguan);
getchar();
printf("
确定要修改吗(Y/N)?");
a=getchar();
if((a=='Y')||(a=='y'))
{ strcpy(t->name,name);
strcpy(t->jiguan,jiguan);
write_file();
printf("……修改完成!
");
getchar();
}
}
else
{printf("
没有此学生的信息

");}
printf("
");
myfree();
printf("按回车键回到主菜单……");
getchar();
printf("

");
}
我实在不想翻译了,晕死,那个程序明明写的清清楚楚,还要我翻译什么,你看着给分吧

这是一个数字控制的菜单选择,分别定义了数字0-6所控制的功能,输入不同数字调用不同函数,应该是个人事管理系统菜单选项。0,退出 1, 主菜单2插入人员信息,3,查看所有人员信息,4,删除人员信息,5查找人员信息,6更改人员信息,其他数字输出Input error,please input 0~6

这个程序是输出一个N阶的魔方阵,既每行每列斜行之和都相等
在这里你首先要知道求这样一个矩阵的一个技巧和方法
就是从1开始往N*N的矩阵里填数,下一个数就填在它的右上角,若右上角已经填了数,就填在它的下方。
eg :5*5的矩阵,如果1填在【0,2】,那么3就在【-1,3】等效与原矩阵中的【4,3】,也就是除5取余。如果【4,3】位置上已经有数了就填在【0,2】的下方,既【1,2】。。。这个树一个规律,你可以那个简单的矩阵试试就明白竟然真的都相等哦 好神奇。。。呵呵 所以明白了上面的算法下面的程序就不难理解了
#include<stdio.h>
void main()
{
int a[10][10]={0}; //定义一个 10*10的数组
int b,c,d,e,f;
printf("请输入魔方阵的阶数(请注意阶数不大于10):");
scanf("%d",&b); //输入矩阵的阶数
e=b/2;
d=0;
for(c=1;c<=b*b;c++) //从一到N*N开始填数
{
a[d][e]=c; //1开始填在【0,2】
if(a[(d-1+b)%b][(e+1+b)%b]==0)//如果其右上角没有数,则下个数填在右上角
{
d=(d-1+b)%b;
e=(e+1+b)%b;
}
else //如果右上角已经填数了,就填在正下面
{
d=(d+1+b)%b;
e=e%b;
}
}
for(d=0;d<b;d++) // 输出整个数组
{
for(f=0;f<b;f++)
printf("%d\t",a[d][f]);
printf("\n");
}
}

#include<stdio.h>
void main()
{
int a[10][10]={0}; (定义一个2唯数组,整型 )
int b,c,d,e,f; (定义整数)
printf("请输入魔方阵的阶数(请注意阶数不大于10):"); (提示)
scanf("%d",&b); (输入b的值)
e=b/2; (将2分之b的值赋给e)
d=0; (d的初值设为0)
for(c=1;c<=b*b;c++) (做循环,从c=1开始,到b*b时候结束 )
{
a[d][e]=c; (赋值)
if(a[(d-1+b)%b][(e+1+b)%b]==0] (如果2唯数组中的元素a[(d-1+b)余b的值][(e+1+b)余b的值]等于0的话,执行以下语句)
{
d=(d-1+b)%b; (d=(d-1+b)余b)
e=(e+1+b)%b; (和上步一个道理)
}
else (如果刚才那个a[][]不等于0的话执行以下语句)
{
d=(d+1+b)%b; (将(d+1+b)余b的值赋给d)
e=e%b; (和上步一个道理)
}
} (上面那个for循环语句结束)
for(d=0;d<b;d++) (开始另外一个循环语句)
{
for(f=0;f<b;f++) (在这个循环中还要执行另外一个循环)
printf("%d\t",a[d][f]); (这个嵌套循环的作用主要是为了打印出a[][]中的每一项)
printf("\n");
}
}
交流一下,呵呵

输入魔方阵的阶数,并输出整个魔方阵
魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。
如3×3的魔方阵:
8 1 6
3 5 7
4 9 2
魔方阵的排列规律如下:
(1)将1放在第一行中间一列;
(2)从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列);
(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;
(4)当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列;
(5)如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;

前几天才写过这程序,基本和我写的一样

#include<stdio.h>
void main()
{
int a[10][10]={0}; //初始化全部数据为0,后面会有用
int b,c,d,e,f;
printf("请输入魔方阵的阶数(请注意阶数不大于10):");
scanf("%d",&b);
e=b/2;
d=0;
for(c=1;c<=b*b;c++)
{
a[d][e]=c; //从第一排最中间的那个数开始从1开始填数
if(a[(d-1+b)%b][(e+1+b)%b]==0) //做一个封闭矩阵,矩阵上接下,左接右,并且确定相邻右上角的数字数否为0
{
d=(d-1+b)%b; //如果没有填数,这里还是初始化的0,那么将坐标给它,准备填数
e=(e+1+b)%b; //同上
}
else
{
d=(d+1+b)%b; //如果右上角有数了,则向下移一行,从下方开始填数
e=e%b;
}
}
for(d=0;d<b;d++) //输出
{
for(f=0;f<b;f++)
printf("%d\t",a[d][f]);
printf("\n");
}
}


编译程序和解释程序都是什么意思?
编译程序(Compiler,compiling program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。

C语言题,求解释
程序的运行结果是Zhao,m,85,90 10.这个就是简单利用拷贝关系,先定义了结构体STU类型,然后在main函数里定义了STU c={"Qian",'f',95.0,92.0},d;变量并赋值了,这个我们叫初始化。然后放到f()函数里的形参去也就是STU a然f()方法里面也定义了STU b={"Zhao",'m',85.0,90.0};变量并赋值strcpy(a.name,...

汇编语言程序求逐行解释!!!
不是的话, jnz next1 ;则读取下一个字符,直到读取'+'为止 and ax,000FH ;同上面解释,ASCII变成对应的数值 mov y, al ;保存到y变量中next2: mov ah,1 ;同Next1解释 int 21h cmp al,'+'

c语言,程序运行结果\/求解释
include <stdio.h>#define M(x, y) x*y \/\/宏替换 将M(x,y) 替换为x*yint s = 0;\/\/全局变量void f1(){int k = 1;s = s + k;\/\/s=s+1 k++;\/\/这句没用 因为k是局部变量 函数执行完毕 这个变量就失效了}void f2(int n){if (n>3)f2(n \/ 4);\/\/如果 n>3 递归调用...

怎样解释这个c语言程序??特别是划线部分
取位 ,a%10 是取 a 的个位,a\/10%10 是取 a 的十位, a\/100 是取 a 的百位,由于 a 是 int 型,实际范围为 -32768~32767,存在 a 为4位数、5位数 的情况,所以,取百位的正确写法应该是 a\/100%10。如果LZ 硬要说,a已经=123了,不会大于3位数了。那我想说,你还要 a 干嘛,...

C语言 麻烦帮忙解释个程序
p1+2和p2+1同理 strcat是将第2个字符串跟在第1个字符串后面,所以结果第一个字符串变长了,并且将第一个字符串的指针作为返回值返回 但是这个程序运行的话会出错,因为执行strcat的时候,p1容量不够再存放"BCD"这个字符串 做些修改,如果把char *p1="abcd",改成char p1[10];的话 运行以后结果...

汇编语言程序简单的标注???
JNB ACC.7,ZHENG;ACC.7为0转ZHENG MOV 73H,#11;将数据11送入73H单元 ZHENG:MOV A,73H;将73H单元中数据送入A(数据偏移量)MOV DPTR,#TAB;取数据表首地址 MOVC A,@A+DPTR;取数据 MOV P1,A;数据由P1输出 MOV P3,#00100000B;将数据20H送入P3(设置标志位)CALL DLIMS;调用子程序...

什么是汇编程序,编译程序,解释程序?分别说明他们的功能
【汇编程序】:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。【编译程序】:把用高级程序设计语言书写的源程序,翻译成等价的计算机汇编语言或机器语言的目标程序的翻译程序。【解释程序】:对源程序边解释翻译成机器代码边执行的高级语言程序。高级语言的程序的执行的途径:1)源程序(高级...

C语言,这个程序,箭头指的语句分别是什么意思呢?求耐心解释。
a=077;就是把a赋值77 b=a&3; &是按位与,77的2进制为100 1101。3的2进制为11,按位与后,结果为01。所以b=01 b &=7; 相当于b = b & 7 ;这里b=01,07的二制数为111,按位与后,b=1

C语言程序求解释
你是不是要这种效果:include <stdio.h>int main(){ void swap2(int *p1, int *p2); int a, b; int *p1, *p2; printf("请输入a和b的值,用空格分开:"); scanf("%d%d", &a, &b); p1=&a; p2=&b; if(*p1 < *p2) { swap2(p1, p2); ...

赤城县15017032624: c语言(计算机编程语言) - 搜狗百科
赵君本悦: #include "stdio.h" int i=0; // 一个全局的变量i ,在本程序中未起作用 fun1(int i) { i=(i%i)*(i*i)/(2*i)+4; // i%i取余为0,因此此等式i = 0 + 4 printf("i=%d\n",i); // i = 4 return(i); } fun2(int i) { i=i2,则i = 0 return(i); } void main() {int i=5;// fun1,fun2传递...

赤城县15017032624: C语言程序,求详细解释 -
赵君本悦: #include<stdio.h> main() {char s[80]; int i=0; gets(s); //获取字符串 while(s[i]!='\0')//遍历字符串 { if(s[i]<='z'&&s[i]>='a') 判断是该字符串是否是小写字母 s[i]='z'+'a'-s[i];//将小写字母转换成其他字母,例如输入的是'a', 则转成'z',其他根据ascii码值转.i++; } puts(s);输出转换后的字符串.} 所以你要输入AabD,输出就是AzyD.希望对你有帮助!!!

赤城县15017032624: c语言程序解释 -
赵君本悦: while((c=getchar(意思就是当输入的字符不是“问号”即“?”时 执行循环 putchar(--c); 意思就是输出c所对应的ASC码的前一个所对应的字符 另外你输入Y?N?...Y后面的...

赤城县15017032624: C语言程序代码解读 -
赵君本悦: 不难理解,整个算法就是:先找p字串开头的空格,全部忽略掉,然后将所有非空字符复制到q,当再次遇到空格时,将所有的空格压缩成一个'_',然后再将所有非空字符复制到q,这样循环直至p字串处理完毕.具体解释如下.while ( *p!='\0' ) { ...

赤城县15017032624: C语言程序,求详细解释!! 具体每一步的解释,谢谢~~ -
赵君本悦: int i,j,x=0; //定义三个整形变量,赋值为0 for (i=0;i<20;i++) //for循环 i从0开始逐渐加1,循环20次.{x=x+1; //x+1再赋值给x自己 for (j=0;j<3;j++){ //for循环 j从0逐渐加1 ,循环3次.if(j%2) continue; //如果 j取余2 不等于0,也就是if条件为true,就不...

赤城县15017032624: C语言是什么意思?
赵君本悦: C语言是编程语言之一,如今广泛应用于计算机,单片机等智能系统上

赤城县15017032624: c语言简单程序,解释一下各段意思 -
赵君本悦: scanf是输入函数,就是接收两个整数 c=a+b是把输入的连个数的和赋值个变量C printf是输出函数,就是输出刚才收入两个数据的和 getch收入一个字符

赤城县15017032624: C语言程序解读 -
赵君本悦: 是的.第一个getchar()接收s,让循环开始.然后循环中getchar()接收后面输入的字符,直到输入'\n'也就是回车键结束循环.

赤城县15017032624: 解释一个简单的C语言程序 -
赵君本悦: union 是共用体的标识符.1.它所占的长度等于其中最大的单位的长度.你这个union的大小是 int 的大小2. 各个数据成员同占一个储存空间,所以一个时间就只有一个数据成员是有意义的.你把 u1.c='A';就是把这段空间写入了字符A.然后printf();就是把这段空间按照字符的方式输出....(在这个时候正int 的 n是没有意义的) 打印出来的是A

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网