南邮-软件设计实验(C语言版)

说在前面:所有代码实现均在VC++6.0环境下测试成功。建立文件(*.c),粘贴代码即可,运行~

本次设计实验主要是对C语言字符串、数组、结构体、文件读写等知识的实际运用。文章中的代码测试基本可以运行,界面还需美化。

A档

一、分数统计

课题内容:

  设计一个分数统计程序。包括学生信息的输入输出以及排序。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。

课题要求:

(1)输入某班级学生的姓名、分数;
(2)对(1)的分数进行降幂排列并输出;
(3)具有输入输出界面。

运行示例

示例代码:

A1.c

#include<stdio.h>
#include<string.h>

void swap(char *p,char *q)
{
   
char a[20];
strcpy(a,p);
strcpy(p,q);
strcpy(q,a);
}

int main(){
   
    int score[5],i,j,score_temp;
    char name[5][10],name_temp[10] = "";
    printf("********学生成绩排序系统**********\n");
    printf("请输入学生姓名成绩:\n");
    for(i=0;i<5;i++){
   
        scanf("%s %d",&name[i],&score[i]);
    }
    for(i=0;i<5;i++){
   
        for(j=i+1;j<5;j++){
   
            if(score[i]<score[j]){
   
                score_temp = score[i];
                score[i] = score[j];
                score[j] = score_temp;
                swap(name[i],name[j]);
            }
        }
    }
    printf("学生成绩排名如下:\n");
    for(i=0;i<5;i++){
   
        printf("%s %d\n",name[i],score[i]);
    }
    return 0;
}

/*
one 90
two 80
three 92
four 99
five 86
*/

//此处测试用例5个,可自行扩展

二、打字程序

课题内容:

  设计一个打字程序。包括随机产生字符串,以及字符串比较和统计。通过此课题,熟练掌握数组、格式输出、字符串处理等。

课题要求:

(1)随机产生一字符串,每次产生的字符串内容、长度都不同;
(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;
(3)具有输入输出界面。

运行示例

示例代码:

A2.c

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 

char *randstr(char *str)
{
   
	int i,len;
	srand(time(NULL));
	len = rand()%10+2;
	for (i = 0; i < len; ++i)
	{
   
		switch ((rand() % 3))
		{
   
		case 1:
			str[i] = 'A' + rand() % 26;
			break;
		case 2:
			str[i] = 'a' + rand() % 26;
			break;
		default:
			str[i] = '0' + rand() % 10;
			break;
		}
	}
	str[i] = '\0';
	return str;
}

int main(){
   
    char name[20],inputstr[20];
    int i=0,error = 0,j=5;
	float gailv;
    while(j!=0){
   
		printf("%s\n",randstr(name));
		scanf("%s",&inputstr);
        while(name[i]!='\0'){
   
            if(name[i]!= inputstr[i]){
   
                error++;
            }
            i++;
        }
        if(error == 0){
   
            printf("输入正确,正确率:100%\n");
        }else{
   
            gailv = (1-error/(float)strlen(name))*100;
            printf("输入错误,正确率:");
            printf("%.2f",gailv);
            printf("%%\n");
        }
        j--;
        error=0;
        i=0;
    }

    return 0;
}

三、文本编辑器

课题内容:

  设计一个简单的文本编辑器,该系统要求对一个文本文件中的内容进行各种常规操作,如:插入、删除、查找、替换等功能。通过此课题,熟练掌握文本文件的操作及用字符数组或字符指针实现字符串操作的功能。

课题要求:

(1)编辑文本;
(2)保存、打开指定位置的文本文件;
(3)具有输入输出界面。

运行示例

示例代码

A3.c

此处代码C++实现,无心修改,直接移步软件设计-(C++版)查找

四、加密

课题内容:

  设计一个加密程序。包括明文与密钥的转换。通过此课题,熟练掌握数组、格式输出、字符串处理、类型转换等。

课题要求:

(1)输入任意一段明文M,以及密钥K;
(2)根据以下公式将其转换为密文C。
Ci = mi + K ,其中i = 0,1,……n-1 , K 为密钥;
(3)具有输入输出界面。

运行示例

示例代码:

A4.c

#include<stdio.h>
#include<string.h>

void jiemi(){
   
		char M[100],C[100];
	int flag=1,K,i;
	while(flag){
   
		printf("请输入密文M和密钥K:\n");
		scanf("%s",M);
		scanf("%d",&K);
		strcpy(C,M);
		for(i=0;i<strlen(M);i++){
   
			C[i] =  C[i]-K;
			if((C[i]>='a'&&C[i]<='z')||(C[i]>='A'&&C[i]<='Z'))
				continue;
			else
			{
   
				printf("请输入有效密文和密钥。\n");
				break;
			}
			if(i==strlen(M))
				flag==0;
		}	
	}
	
	printf("解密后的明文是:%s\n",C);
}

void jiami(){
   
	char M[100],C[100];
	int flag=1,K,i;
	while(flag){
   
		printf("请输入明文M和密钥K:\n");
		scanf("%s",M);
		scanf("%d",&K);
		strcpy(C,M);
		for(i=0;i<strlen(C);i++){
   
			C[i] =  C[i]+K;
			if((C[i]>='a'&&C[i]<='z')||(C[i]>='A'&&C[i]<='Z'))
				flag=1;
			else
			{
   
				printf("请输入有效明文和密钥。\n");
				break;
			}
			if(i==strlen(M))
				flag=0;
		}	
	}
	
	printf("加密后的密文是:%s\n",C);
}

int main(){
   
    int type_m,flag1=1;
	while(flag1){
   
		printf("请输入您要选择的功能:\n");
		printf("1、加密\n");
		printf("2、解密\n");
		printf("0、退出\n");
		scanf("%d",&type_m);
		switch(type_m){
   
		case 
  • 41
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值