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); ...
赵君本悦: #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