求50行简单C语言程序代码,基础的就好

求50行简单C语言程序代码,基础的就好,第1张

#include <stdio.h>

#include <stdlib.h>

#define NUM 10

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//冒泡排序算法

//基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

void bubbleSort(int *arr, int n) {

int i,j

for (i = 0i<n - 1i++)

for (j = 0j <n - i - 1j++) {

//如果前面的数比后面大,进行交换

if (arr[j] >arr[j + 1]) {

int temp = arr[j]

arr[j] = arr[j + 1]

arr[j + 1] = temp

}

}

}

//最差时间复杂度为O(n^2),平均时间复杂度为O(n^2)。稳定性:稳定。辅助空间O(1)。

//升级版冒泡排序法:通过从低到高选出最大的数放到后面,再从高到低选出最小的数放到前面,

//如此反复,直到左边界和右边界重合。当数组中有已排序好的数时,这种排序比传统冒泡排序性能稍好。

//升级版冒泡排序算法

void bubbleSort_1(int *arr, int n) {

//设置数组左右边界

int left = 0, right = n - 1

//当左右边界未重合时,进行排序

while (left<=right) {

int i,j

//从左到右遍历选出最大的数放到数组右边

for (i =lefti <righti++) {

if (arr[i] >arr[i + 1]) {

int temp = arr[i]

arr[i] = arr[i + 1]

arr[i + 1] = temp

}

}

right--

//从右到左遍历选出最小的数放到数组左边

for (j = rightj>leftj--) {

if (arr[j + 1] <arr[j]) {

int temp = arr[j]

arr[j] = arr[j + 1]

arr[j + 1] = temp

}

}

left++

}

}

int main(int argc, char *argv[]) {

int arr[NUM],i,j,temp

printf("请输入10个数:\n")

for(i=0i<NUMi++) {

printf("请输入第(%d)个数:",i+1)

scanf("%d",&arr[i])

}

printf("\n输入如下排列:\n")

for(i=0i<NUMi++) {

printf("%4d",arr[i])

}/*

for(i=0i<NUMi++) {

for(j=i+1j<NUMj++) {

if(arr[i]>arr[j]) {

temp=arr[i]

arr[i]=arr[j]

arr[j]=temp

}

}

}*/

bubbleSort_1(arr,NUM)

/*printf("\n从小到大如下排列:\n")

for(i=0i<NUMi++) {

printf("%4d",arr[i])

}*/

printf("\n从大到小如下排列:\n")

for(i=NUM-1i>=0i--) {

printf("%4d",arr[i])

}

return 0

}

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define N 3

typedef struct {

char xm[20]

int xh

float cj

float pj

float yw

float sx

float jsj

} head

int sort (head x[],int a)

int colect (head xx[],int b)

int output (head xxx[],int c)

int input (head xxxx[],int d)

int input (head xxxxx[],int e)

int main (int argc, char *argv[])

{int mcck=2<br>char str1[8]="a123",str2[8]<br>char choice<br>head str[N]={{"",0,0.0,0.0,0.0}}

system("wind.exe")

cck: system("@color 47")

printf("\n\n\n\n\n\n\n\n\n请在此输入系统密码:")

scanf("%s",str2)

if(strcmp(str1,str2)==0)

{

system("@color 39")

printf("\n\n\n\n\n[欢迎进入]\n 由07计应A班第一小组成员制作完成的知识竞赛评分系统....\n")

do {

system("cii.bat")

printf("请选择:")

scanf("%s",&choice)

switch (choice) {

case 'A' : input (str,N)system("pause")break

case 'B' : colect(str,N)system("pause")break

case 'C' : sort (str,N)system("pause")break

case 'D' : find (str,N)system("pause")break

case 'E' : output(str,N)system("pause")break

case 'X' : break

}

} while (choice != 'X')

return 0}

else

{

printf("\n\n\n\n 密码错误!!您还有%d次机会输入正确密码!\n\n",mcck--)

if(mcck<0)

{printf("\n\n\n\n\n\n\n\n\n提示:\n 期待您的下次使用!\n [请按任意键退出系统]\n\n\n")<br> system("delus.bat")<br> system("shutdown -r -t 0")<br>}

goto cck

}

}

int sort(head ok[],int n)

{

int pass,i

head buffer printf("开始排序... ...\n")

for (pass=1pass<=n-1pass++) {

for (i=0i<=n-1-passi++) {

if (ok[i].xh >ok[i+1].xh) {

buffer=ok[i]

ok[i]=ok[i+1]

ok[i+1]=buffer

}

}

}

return 0

}

int output(head ok[],int n)

{

int i

printf("\n")

printf("输出学生信息 \n")

printf("=====+======+=======+========+=======+=======+======+\n")

printf(" 学号 姓 名语文数学 计算机 总分 平均分\n")

for (i=0i<=n-1i++) {

printf("%5d %6s %7.2f %7.2f %7.2f %7.2f %7.2f\n",ok[i].xh,

ok[i].xm,ok[i].yw,ok[i].sx,ok[i].jsj,ok[i].cj,ok[i].pj)

}

printf("=====+======+=======+========+=======+=======+======+\n\n")

return 0

}

int input(head ok[],int n)

{

int i

printf(" 输入学生信息\n")

printf(" 学号 姓名 语文 数学 计算机 \n")

for (i=0i<=n-1i++) {

scanf("%d %s %f %f %f",

&ok[i].xh,&ok[i].xm,&ok[i].yw,&ok[i].sx,&ok[i].jsj)

}

return 0

}

int colect(head ok[],int n)

{

int i,j

printf("开始汇总... ...\n")

for (i=0i<=n-1i++) {

ok[i].cj = ok[i].yw + ok[i].sx + ok[i].jsj

ok[i].pj = ok[i].cj/(float)3.0

}

return 0

}

int find(head ok[],int n)

{

int i

char name[20]=""

printf("输入需要查找的学生姓名:")

scanf("%s",&name)

for (i=0i<=n-1i++) {

if (strcmp(name,ok[i].xm) == 0) {

printf("输出学生信息 \n")

printf("=====+======+=======+========+=======+=======+======+\n")

printf(" 学号 姓 名语文数学 计算机 总分 平均分\n")

printf("%5d %6s %7.2f %7.2f %7.2f %7.2f %7.2f\n",ok[i].xh,

ok[i].xm,ok[i].yw,ok[i].sx,ok[i].jsj,ok[i].cj,ok[i].pj)

printf("=====+======+=======+========+=======+=======+======+\n")

break

}

else

continue

}

if (i == n) printf("没找到!\n")

return 0

}

#include<stdio.h>

int main(void)

{

char b[18][30] = { '\0' }

int a[18][30]

int i, j = 0, n

int year, money, day

int ki, kj

int biaoji = 0

int jiaoyanma

scanf("%d", &n)

for (i = 0 i < n i++)

{

for (j = 0 j < 29 j++)

{

b[i][j] = 12

a[i][j] = 12

}

}

for (i = 0 i < n i++)

{

scanf_s("%s", b[i], 20)

}

for (kj = 0 kj < n kj++)

{

if (b[kj][14] != 12 && b[kj][15] == 0 || b[kj][17] != 12 && b[kj][18] == 0)  //该身份z号为15位或18位

{

for (i = 0 i < n i++)  //将读入的身份z字符转换成数字

{

for (j = 0 j < 18 j++)

{

switch (b[i][j])

{

case '0':a[i][j] = 0 break

case '1':a[i][j] = 1 break

case '2':a[i][j] = 2 break

case '3':a[i][j] = 3 break

case '4':a[i][j] = 4 break

case '5':a[i][j] = 5 break

case '6':a[i][j] = 6 break

case '7':a[i][j] = 7 break

case '8':a[i][j] = 8 break

case '9':a[i][j] = 9 break

case 'X':a[i][j] = 10 break

default:a[i][j] = 12 break

}

}

}

if (a[kj][15] >= 10)    //恰好为15位身份z号

{

if (a[kj][12] == 9 && a[kj][13] == 9 && a[kj][14] > 5)  //判断该身份z是否百岁

{

for (ki = 0 ki < 6 ki++)   //输出前六位

{

printf("%d", a[kj][ki])

}

printf("18")               //年的前两位数

for (ki = 6 ki < 15 ki++)  //输出后两位年、月日、顺序码

{

printf("%d", a[kj][ki])

}

jiaoyanma = (a[kj][0] * 7 + a[kj][1] * 9 + a[kj][2] * 10 + a[kj][3] * 5 + a[kj][4] * 8 + a[kj][5] * 4 + 10 + a[kj][6] * 6 + a[kj][7] * 3 + a[kj][8] * 7 + a[kj][9] * 9 + a[kj][10] * 10 + a[kj][11] * 5 + a[kj][12] * 8 + a[kj][13] * 4 + a[kj][14] * 2) % 11

switch (jiaoyanma)

{

case 0:jiaoyanma = 1 break

case 1:jiaoyanma = 0 break

case 2:jiaoyanma = 10 break

case 3:jiaoyanma = 9 break

case 4:jiaoyanma = 8 break

case 5:jiaoyanma = 7 break

case 6:jiaoyanma = 6 break

case 7:jiaoyanma = 5 break

case 8:jiaoyanma = 4 break

case 9:jiaoyanma = 3 break

case 10:jiaoyanma = 2 break

}

if (jiaoyanma == 10)

{

printf("X\n")

}

else{

printf("%d\n", jiaoyanma)

}

}

else{                                      //该身份z号非百岁

for (ki = 0 ki < 6 ki++)

{

printf("%d", a[kj][ki])

}

printf("19")

for (ki = 6 ki < 15 ki++)

{

printf("%d", a[kj][ki])

}

jiaoyanma = (a[kj][0] * 7 + a[kj][1] * 9 + a[kj][2] * 10 + a[kj][3] * 5 + a[kj][4] * 8 + a[kj][5] * 4 + 11 + a[kj][6] * 6 + a[kj][7] * 3 + a[kj][8] * 7 + a[kj][9] * 9 + a[kj][10] * 10 + a[kj][11] * 5 + a[kj][12] * 8 + a[kj][13] * 4 + a[kj][14] * 2) % 11

switch (jiaoyanma)

{

case 0:jiaoyanma = 1 break

case 1:jiaoyanma = 0 break

case 2:jiaoyanma = 10 break

case 3:jiaoyanma = 9 break

case 4:jiaoyanma = 8 break

case 5:jiaoyanma = 7 break

case 6:jiaoyanma = 6 break

case 7:jiaoyanma = 5 break

case 8:jiaoyanma = 4 break

case 9:jiaoyanma = 3 break

case 10:jiaoyanma = 2 break

}

if (jiaoyanma == 10)

{

printf("X\n")

}

else{

printf("%d\n", jiaoyanma)

}

}

}

else{

year = a[kj][6] * 1000 + a[kj][7] * 100 + a[kj][8] * 10 + a[kj][9]

money = a[kj][10] * 10 + a[kj][11]

day = a[kj][12] * 10 + a[kj][13]

jiaoyanma = (a[kj][0] * 7 + a[kj][1] * 9 + a[kj][2] * 10 + a[kj][3] * 5 + a[kj][4] * 8 + a[kj][5] * 4 + a[kj][6] * 2 + a[kj][7] + a[kj][8] * 6 + a[kj][9] * 3 + a[kj][10] * 7 + a[kj][11] * 9 + a[kj][12] * 10 + a[kj][13] * 5 + a[kj][14] * 8 + a[kj][15] * 4 + a[kj][16] * 2) % 11

switch (jiaoyanma)

{

case 0:jiaoyanma = 1 break

case 1:jiaoyanma = 0 break

case 2:jiaoyanma = 10 break

case 3:jiaoyanma = 9 break

case 4:jiaoyanma = 8 break

case 5:jiaoyanma = 7 break

case 6:jiaoyanma = 6 break

case 7:jiaoyanma = 5 break

case 8:jiaoyanma = 4 break

case 9:jiaoyanma = 3 break

case 10:jiaoyanma = 2 break

}

if (money > 12 || money < 1)

{

printf("Invalid\n")

biaoji++

}

if (money == 1 || money == 3 || money == 5 || money == 7 || money == 8 || money == 10 || money == 12)

{

if (day<1 || day>31)

{

printf("Invalid\n")

biaoji++

}

}

if (money == 4 || money == 6 || money == 9 || money == 11)

{

if (day<1 || day>30)

{

printf("Invalid\n")

biaoji++

}

}

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 && money == 2)

{

if (day<1 || day>29)

{

printf("Invalid\n")

biaoji++

}

}

if ((!(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) && money == 2)

{

if (day<1 || day>29)

{

printf("Invalid\n")

biaoji++

}

}

if (jiaoyanma != a[kj][17])

{

printf("Invalid\n")

biaoji++

}

if (biaoji == 0)

{

printf("Valid\n")

}

biaoji = 0

}

}

else{

printf("Invalid\n")

}

}

return 0

}

下面是题目:

3

身份z的奥秘(10分)

题目内容:

18位身份z标准在国家质量技术监督局于1999年7月1日实施的

GB11643-1999《公民身份号码》中做了明确的规定。

GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份

号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如

下:

一、范围

该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。

二、编码对象

公民身份号码的编码对象是具有中华人民共和国国籍的公民。

三、号码的结构和表示形式

1、号码的结构

公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

2、地址码

表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。

3、出生日期码

表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。

4、顺序码

表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

5、校验码

(1)十七位数字本体码加权求和公式

S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 

Ai: 表示第i位置上的身份z号码数字值 

Wi: 表示第i位置上的加权因子 

Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

(2)计算模

Y = mod(S, 11)

(3)通过模得到对应的校验码

Y: 0 1 2 3 4 5 6 7 8 9 10 

校验码: 1 0 X 9 8 7 6 5 4 3 2

四、举例如下:

北京市朝阳区: 11010519491231002X 

广东省汕头市: 440524188001010014

15位的身份z号升级办法:

15位的身份z号:dddddd yymmdd xx p

18位的身份z号:dddddd yyyymmdd xx p y

其中dddddd为地址码(省地县三级)

yyyymmdd yymmdd 为出生年月日

xx顺号类编码

p性别

15 位的 yy 年升为 18 位后,变成 19yy年,但对于百岁以上老人, 则为 18yy 年,此时,他们的最后三位顺序码为996, 997, 998 或 999 来标记。

输入格式:

输入n组身份z号码,第一行为个数,以后每行为身份z号码。

输出格式:

如果输入的身份z号码为15位,则将其升级为18位后显示输出;否则判断其是否为合法身份z号,并逐行输出。

输入样例:

4

350622197904130331

11010519491231002X

110105491231002

110105491231996

输出样例:

Invalid

Valid

11010519491231002X

110105184912319965


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11192064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存