安在信息安全新媒体 2017-12-10
在输入n之后有个回车,因为是字符型数组,所以回车别数组吸收,要定义一个字符型变量op把回车吸收
定义整型变量flag作为是否合格的标志,sum作为z值,count作为合格数,i,j,n表示号码个数 定义 b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//权重分配表 输入n char a[n][18],c,op;//a[n][18]实现多行字符串 op=getchar();//吸收n后的回车 for(i 0 to n-1){ 输入a[i] for(j 0 to 16){ if(a[i][j]不是字符0到9) flag为1,直接跳出循环 计算num=(a[i][j]-'0')*b[j];//加权求和 sum+=num; } 计算sum=sum%11;//得到z值 switch(sum){ case 0:c='1';break; ... 对应表 } if(c不等于a[i][17])//判断是否和最后一位数相等 则flag为1 if(flag为0) 则count加一,sum赋为0 if(flag为1) 则输出该号码,flag赋为0,sum为0 } if(count为n)//合格数为n 则输出All passed
这个题和第三题都存在吸收回车的问题,另外在对应关系时要用switch语句且要定义一个字符型变量
定义字符型数组s[4][20]放四句诗,p[9]放每句的第一个字 for(i 0 to 3) 输入s[i] for(i 0 to 3){ p[2*i]=s[i][0];//汉字占两个字符的位置 p[2*i+1]=s[i][1]; } p[2*i]放入字符串结束符 输出数组p
题目提醒一个汉字占两个字节,在提出第一个汉字的时候要定义一个新的数组。
谢国庆
我的代码
我用的是二维数组来实现输入多行字符串,国庆用的是循环。
他的代码还用到了头文件string.h中的memset函数,我看他的代码之前还不知道这个函数,就查阅了资料,这个函数的功能大致是每次循环后为新申请的内存做初始化工作。
像不知道这个函数功能的人来说,不容易懂这个代码。
但通过这个题我觉得自己的知识还很欠缺,以后要多掌握其他知识,多向能力强的同学请教。
int *p; char *cp; float *fp; double *dp;
指针+一个整型常量
不能
void splitfloat(float x,int intpart,float fracpart)
splitfloat(x,intpart,fracpart);
用指针类型形参接受实参的地址,来对实参所指的变量的值进行改变
#include<stdio.h> void bubble(int *a,int n); int main(){ int i,n; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); bubble(a,n); for(i=0;i<n;i++) printf("%d ",a[i]); return 0; } void bubble(int *a,int n){ int i,j,change; for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++){ if(*(a+j)>*(a+j+1)){ change=*(a+j); *(a+j)=*(a+j+1); *(a+j+1)=change;} } }
int a[100],p;
p=a;
a+i=&a[i];
a[i]=(a+i);
char line[100],s;
s=line;
初始位置在字符串首字符的位置
用数组表示字符,数组名是一个常量,用指针表示字符,指针是一个变量。
point表示内容,&point表示地址
再输入之后p=a+6,若要输出从a开始,要重新使p=a,否则会发生越界。
4.字符串处理函数的应用
3.在dev上把字符串处理函数多运用
编程题的二,三题都没有满分
7-2 jmu-c-十进制转16进制
7-3 jmu-c-输出字符间的字符子串
7-4 数组元素的删除
改正代码
考试的时候对于如何转成十六进制数的方法太麻烦,考完后想想十进制转二进制是除二取余法,所以就用了除十六取余法来算。
7-3
没有考虑到起始字符或终止字符重复出现的情况。