2013上机

2013 1、输出五位以内的对称素数(?)
2、有一个天平,有六种砝码,分别重1,2,3,5,10,20克,每种砝码各有5,3,2,2,1,1个,计算天平能称出的重量及种类

#include #define NUM 6 //砝码的种类 #define MAX 58 //最大能称量的重量+1 int main(int argc, char **argv) { int m[NUM] = { 1,2,3,5,10,20 }, n[NUM] = { 5,3,2,2,1,1 }, i[NUM]; int flag[MAX] = { 0 }; //用于统计能称的出种类(与统计字符串中的flag类似) for (i[0] = 0; i[0] <= n[0]; i[0]++) for (i[1] = 0; i[1] <= n[1]; i[1]++) for (i[2] = 0; i[2] <=n[2]; i[2]++) for (i[3] = 0; i[3] <= n[3]; i[3]++) for (i[4] = 0; i[4] <= n[4]; i[4]++) for (i[5] = 0; i[5] <= n[5]; i[5]++) { int sum = 0; int j; for (j = 0; j < NUM; j++) { sum += i[j] * m[j]; } flag[sum]++; printf("称量重量为%d的一种方法为[%d %d %d %d %d %d]\n", sum,i[0],i[1],i[2],i[3],i[4],i[5]); } printf("称量范围为:"); int f; for (f = 0; f < MAX; f++) if (flag[f]) printf("%d ", f); return 0; }

【2013上机】3、输入n个由‘0’和‘1’组成的字符串(n由用户输入),规定字符串的比较规则如下:
a.字符串长的比较大
b.字符串等长的含‘0’多的小
c.字符串等长,且含‘1’相等,则两字符串相等

将输入的n个字符串按照上述规则升序排列。
注:字符串头文件
字符串拷贝函数strcpy(char *destination, char *source)
动态分配内存 void * malloc(int n); 头文件
#include #include #include //还需要写一个check函数来检查输入是否正确 int find_1(char ch[]) { int count = 0; int i = 0; while(ch[i] != '\0') { if(ch[i] == '1') count++; i++; } return count; } int main(int argc, char *argv[]) { int n; int i,j; char temp[10]; printf("输入字符串个数:\n"); scanf("%d",&n); //动态分配二维数组 char **ch = (char**)malloc(n*sizeof(char*)); for(i = 0; i strlen(ch[j])) { strcpy(temp, ch[i]); strcpy(ch[i], ch[j]); strcpy(ch[j], temp); } else if(strlen(ch[i]) == strlen(ch[j]) && find_1(ch[i]) > find_1(ch[j])) { //字符串交换 strcpy(temp, ch[i]); strcpy(ch[i], ch[j]); strcpy(ch[j], temp); } } printf("\n排序后: \n"); for(i=0; i

    推荐阅读