C语言小程序请帮忙写一个学生成绩系统c语言系统的程序

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分2918阅读权限50帖子精华可用积分2918 信誉积分1321 专家积分0 在线时间1555 小时注册时间最后登录
小富即安, 积分 2918, 距离下一级还需 2082 积分
帖子主题精华可用积分2918 信誉积分1321 专家积分0 在线时间1555 小时注册时间最后登录
认证徽章论坛徽章:11
我有一个问题向大家请教。
我想请高手用C语言或者C++帮我写一个加密程序。加密的算法如下:
1、首先取得密钥,为第一块网卡的MAC地址的后四个16进制数;
[root@hp8 ~]# ifconfig eth0
eth0& && &Link encap:Ethernet&&HWaddr 00:10:18:B1:FA:EF
& && && &&&inet addr:135.240.146.25&&Bcast:135.240.146.255&&Mask:255.255.255.0
& && && &&&inet6 addr: fe80::210:18ff:feb1:faef/64 Scope:Link
& && && &&&UP BROADCAST RUNNING MULTICAST&&MTU:1500&&Metric:1
& && && &&&RX packets:8326316 errors:0 dropped:0 overruns:0 frame:0
& && && &&&TX packets:6040424 errors:0 dropped:0 overruns:0 carrier:0
& && && &&&collisions:0 txqueuelen:1000
& && && &&&RX bytes: (1.8 GiB)&&TX bytes: (740.6 MiB)
& && && &&&Interrupt:28
2、即最开始的key=18B1FAEF;
3、假设要加密的文件内容为一个13个字符长度的文本文件:
[root@hp8 ~]# echo &Hello World!& & test
[root@hp8 ~]# cat test |hexdump -C
65 6c 6c 6f 20 57 6f&&72 6c 64 21 0a& && && &&&|Hello World!.|
4、从要加密的文件中取最开始的四个字节48,65,6C和6C,然后和第2步中四个字节的密钥18,B1,FA和EF,按如下方式加密:
byte1 XOR key2: 48 XOR B1 = F9
byte2 XOR key3: 65 XOR FA = 9F
byte3 XOR key4: 6C XOR EF = 83
byte4 XOR key1: 6C XOR 18 = 74
即可得到密文的最开始四个字节为F9,9F,83和74。
5、对上次加密用的密钥进行如下操作,得到下一次加密用的密钥:
newkey=(oldkey*41C64E6D+3039) mod : (18B1FAEF*41C64E6D+3039) mod
= 0216D9FC
即可得到下一次加密用的密钥为02,16,D9和FC。
6、重复步骤4,从要加密的文件中取出后面的四个字节6F,20,57和6F,然后和第5步中得到的四个字节的密钥02,16,D9和FC,进行加密:
byte1 XOR key2: 6F XOR 16 = 79
byte2 XOR key3: 20 XOR D9 = F9
byte3 XOR key4: 57 XOR FC = AB
byte4 XOR key1: 6F XOR 02 = 6D
即可得到密文接下来的四个字节为79,F9,AB和6D。
7、继续重复以上步骤直到处理完要加密的文件的所有字节。
newkey=(oldkey*41C64E6D+3039) mod : (0216D9FC*41C64E6D+3039) mod
= 6F0DC885
byte1 XOR key2: 72 XOR 0D = 7F
byte2 XOR key3: 6C XOR C8 = A4
byte3 XOR key4: 64 XOR 85 = E1
byte4 XOR key1: 21 XOR 6F = 4E
newkey=(oldkey*41C64E6D+3039) mod : (6F0DC885*41C64E6D+3039) mod
= 57D516DA
byte1 XOR key2: 0A XOR D5 = DF
8、最后可以得到密文的全部内容为:
F9 9F 83 74 79 F9 AB 6D 7F A4 E1 4E DF
9、将上述16进制数以二进制形式保存为13个字符长度的密文文件test.crypt
谢谢大家!
お金持ちにあらずんば人にあらず
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分17411阅读权限90帖子精华可用积分17411 信誉积分3159 专家积分0 在线时间5963 小时注册时间最后登录
大富大贵, 积分 17411, 距离下一级还需 2589 积分
帖子主题精华可用积分17411 信誉积分3159 专家积分0 在线时间5963 小时注册时间最后登录
论坛徽章:21
请按不小于平时外包价格*3的水平标价
UID空间积分0 积分4807阅读权限50帖子精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
小富即安, 积分 4807, 距离下一级还需 193 积分
帖子主题精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
认证徽章论坛徽章:2
#include &string.h&
int encrypt_data(char *o_buf, int o_buf_len, int *o_len, const char *data, int data_len, long *io_key)
{
& & & & int i, j,
& & & &
& & & & if (o_buf != NULL && data != NULL && io_key != NULL) {
& & & & & & & & i = 0;
& & & & & & & & j = 0;
& & & & & & & & k = 0;
& & & & & & & & while (i & data_len) {
& & & & & & & & & & & & t = data[i] ^ ((char *)io_key)[(2 - k) % sizeof(long)];
& & & & & & & & & & & & if (j & o_buf_len) {
& & & & & & & & & & & & & & & & o_buf[j] =
& & & & & & & & & & & & & & & & ++j;
& & & & & & & & & & & & }
& & & & & & & & & & & & ++k;
& & & & & & & & & & & & if (k == sizeof(long)) {
& & & & & & & & & & & & & & & & *io_key = (*io_key * 0x41c64e6dl + 0x3039l) % 0xl;
& & & & & & & & & & & & & & & & k = 0;
& & & & & & & & & & & & }
& & & & & & & & & & & & ++i;
& & & & & & & & }
& & & & & & & & if (o_len != NULL) {
& & & & & & & & & & & & *o_len =
& & & & & & & & }
& & & & & & & & return 0;
& & & & }
& & & & return -1;
}
/* test */
#include &stdio.h&
char key[] = {0xEF,0xFA,0xB1,0x18};
const char in_data[] = {0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64,0x21,0x0a};
const char result_data[] = {0xF9,0x9F,0x83,0x74,0x79,0xF9,0xAB,0x6D,0x7F,0xA4,0xE1,0x4E,0xDF};
const char result_key[] = {0xDA,0x16,0xD5,0x57};
int main(void)
{
& & & & char out_data[sizeof(result_data)];
& & & &
& & & & puts(&begin encrypt data&);
& & & & encrypt_data(out_data, sizeof(out_data), &len, in_data, sizeof(in_data), (long *)key);
& & & & if (len == sizeof(out_data) && memcmp(out_data, result_data, len) == 0
& & & & & & & & && memcmp(key, result_key, sizeof(key)) == 0) {
& & & & & & & & puts(&encrypt function ok&);
& & & & }else {
& & & & & & & & puts(&encrypt function failed&);
& & & & }
& & & & return 0;
}
#endif复制代码
UID空间积分0 积分2918阅读权限50帖子精华可用积分2918 信誉积分1321 专家积分0 在线时间1555 小时注册时间最后登录
小富即安, 积分 2918, 距离下一级还需 2082 积分
帖子主题精华可用积分2918 信誉积分1321 专家积分0 在线时间1555 小时注册时间最后登录
认证徽章论坛徽章:11
谢谢您的回复。我学习消化一下。
不过好像执行结果是加密函数错误?
[box@cloud1:hct]$ gcc -o hct hct.c
[box@cloud1:hct]$ ./hct
begin encrypt data
encrypt function failed
[box@cloud1:hct]$
お金持ちにあらずんば人にあらず
UID空间积分0 积分4807阅读权限50帖子精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
小富即安, 积分 4807, 距离下一级还需 193 积分
帖子主题精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
认证徽章论坛徽章:2
字节序的问题,自己搞吧
UID空间积分0 积分4807阅读权限50帖子精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
小富即安, 积分 4807, 距离下一级还需 193 积分
帖子主题精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
认证徽章论坛徽章:2
#include &string.h&
/* netcpy: copy data from/to net bytes order (BIG-ENDIAN)
*
* WARNING: tar can't overflow to src
*/
void *netcpy(void *tar, const void *src, int len)
{
& & & & union netcpy_data {
& & & & & & & & char byte[2];
& & & & & & & &
& & & & }
& & & & char *
& & & & const char *
& & & & if (tar != NULL && src != NULL && len &= 0) {
& & & & & & & & ptar = (char *)
& & & & & & & & psrc = (const char *)
& & & & & & & & if (!(ptar &= psrc && ptar & psrc + len
& & & & & & & & & & & & || psrc &= ptar && psrc & ptar + len)) { /* NOT OVERFLOW */
& & & & & & & & & & & & if (len & 0) {
& & & & & & & & & & & & & & & & if (len & 1) {
& & & & & & & & & & & & & & & & & & & & data.word = 0x1234;
& & & & & & & & & & & & & & & & & & & & if (data.byte[0] == 0x34) { /* LITTLE-ENDIAN */
& & & & & & & & & & & & & & & & & & & & & & & & ptar +=
& & & & & & & & & & & & & & & & & & & & & & & & while (len-- & 0) {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & *--ptar = *psrc++;
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & }else { /* BIG-ENDIAN */
& & & & & & & & & & & & & & & & & & & & & & & & memcpy(tar, src, len);
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }else {
& & & & & & & & & & & & & & & & & & & & *ptar = *
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & }
& & & & }
& & & & return NULL;
}
int calculate_key(char *io_key, int key_len)
{
& & & & if (key_len == sizeof(long)) {
& & & & & & & &
& & & & & & & & netcpy(&key, io_key, sizeof(long));
& & & & & & & & key = (key * 0x41c64e6dl + 0x3039l) % 0xl;
& & & & & & & & netcpy(io_key, &key, sizeof(long));
& & & & & & & & return 0;
& & & & }
& & & & return -1;
}
int crypt_data(const char *data, int data_len, char *io_key, int key_len, char *o_buf, int o_buf_len, int *o_len)
{
& & & & int i, j,
& & & &
& & & & if (data != NULL && io_key != NULL && key_len & 0 && o_buf != NULL) {
& & & & & & & & i = 0;
& & & & & & & & j = 0;
& & & & & & & & k = 0;
& & & & & & & & while (i & data_len) {
& & & & & & & & & & & & t = data[i] ^ io_key[(1 + k) % key_len];
& & & & & & & & & & & & if (j & o_buf_len) {
& & & & & & & & & & & & & & & & o_buf[j] =
& & & & & & & & & & & & & & & & ++j;
& & & & & & & & & & & & }
& & & & & & & & & & & & ++k;
& & & & & & & & & & & & if (k == key_len) {
& & & & & & & & & & & & & & & & calculate_key(io_key, key_len);
& & & & & & & & & & & & & & & & k = 0;
& & & & & & & & & & & & }
& & & & & & & & & & & & ++i;
& & & & & & & & }
& & & & & & & & if (o_len != NULL) {
& & & & & & & & & & & & *o_len =
& & & & & & & & }
& & & & & & & & return 0;
& & & & }
& & & & return -1;
}
/* test */
#include &stdio.h&
const char in_key[] = {0x18,0xB1,0xFA,0xEF};
const char in_data[] = {0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64,0x21,0x0a};
const char result_data[] = {0xF9,0x9F,0x83,0x74,0x79,0xF9,0xAB,0x6D,0x7F,0xA4,0xE1,0x4E,0xDF};
const char result_key[] = {0x57,0xD5,0x16,0xDA};
int main(void)
{
& & & & char out_data[sizeof(result_data)];
& & & & char de_data[sizeof(in_data)];
& & & & char key[sizeof(in_key)];
& & & &
& & & & /* TEST ENCRYPT */
& & & & puts(&begin encrypt data&);
& & & & memcpy(key, in_key, sizeof(in_key));
& & & & crypt_data(in_data, sizeof(in_data), key, sizeof(key), out_data, sizeof(out_data), &len);
& & & & if (len == sizeof(out_data)
& & & & & & & & && memcmp(out_data, result_data, len) == 0
& & & & & & & & && memcmp(key, result_key, sizeof(key)) == 0) {
& & & & & & & & puts(&encrypt function ok&);
& & & & }else {
& & & & & & & & puts(&encrypt function failed&);
& & & & }
& & & & /* TEST DECRYPT */
& & & & puts(&begin decrypt data&);
& & & & memcpy(key, in_key, sizeof(in_key));
& & & & crypt_data(out_data, len, key, sizeof(key), de_data, sizeof(de_data), &len);
& & & & if (len == sizeof(in_data)
& & & & & & & & && memcmp(de_data, in_data, len) == 0
& & & & & & & & && memcmp(key, result_key, sizeof(key)) == 0) {
& & & & & & & & puts(&decrypt data ok&);
& & & & }else {
& & & & & & & & puts(&decrypt data failed&);
& & & & }
& & & & return 0;
}
#endif复制代码
UID空间积分0 积分4阅读权限10帖子精华可用积分4 信誉积分17 专家积分0 在线时间6 小时注册时间最后登录
白手起家, 积分 4, 距离下一级还需 196 积分
帖子主题精华可用积分4 信誉积分17 专家积分0 在线时间6 小时注册时间最后登录
论坛徽章:0
我擦大神啊啊啊啊啊
UID空间积分0 积分4807阅读权限50帖子精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
小富即安, 积分 4807, 距离下一级还需 193 积分
帖子主题精华可用积分4807 信誉积分1231 专家积分54 在线时间1348 小时注册时间最后登录
认证徽章论坛徽章:2
其实,楼主的全部功能我都完成了。只是为了便于楼主提高自己的能力,只发了个核心的加密函数。
UID空间积分0 积分2918阅读权限50帖子精华可用积分2918 信誉积分1321 专家积分0 在线时间1555 小时注册时间最后登录
小富即安, 积分 2918, 距离下一级还需 2082 积分
帖子主题精华可用积分2918 信誉积分1321 专家积分0 在线时间1555 小时注册时间最后登录
认证徽章论坛徽章:11
哎呀,大神啊!你就帮帮楼主嘛,楼主能力很差的。。。
cobras 发表于
其实,楼主的全部功能我都完成了。只是为了便于楼主提高自己的能力,只发了个核心的加密函数。
お金持ちにあらずんば人にあらず
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处写一个C语言小程序
写一个C语言小程序
题目:比赛结果管理系统
结构包含一个选手的基本数据如下:
编号(number),姓名(name),性别(sex),年龄(age),分数(score),最后得分(lastScore)。
编号为整型(int),从1开始连续编号,姓名为长度为10的字符数组char name[10],性别为字符型char(男-M,女-F),年龄为整型,分数为实型(float)数组,记录每位评委给出的分数(小于等于10的正实数),初始分数均为零,评委人数统一为8个,最后得分为实型,通过计算获得(保留两位小数)。
要求完成以下功能:
(1)程序运行时判断是否存在数据文件((player.dat),若没有则从键盘输入学生的有关信息创建到数据文件,要求有10个以上的记录,性别二者都有,年龄18-50之间,数据文件为二进制文件,并使用随机读写处理。
(2)计算并按编号输出选手的最后得分lastScore并保存;
计算方法为;去掉一个最高分和一个最低分后的平均值,并将结果保存
到原文件。输出项包括选手编号、姓名和最后得分。
(3)输出第一名的所以信息。
(4)根据姓名输出任意选手的信息并指出其排名。
哪位帮忙写个范本,最好能解释下语句的意义,万分感谢。
&#include&stdio.h&#include&string.h&#define N 15struct com{&char name[21];&&&&int munber[N];&int age[N];&float score[8];};void main(){&int i,j,k,lastScore[N]={0},n,m,p,sh=0,he=0, average=0;&char s[21];&&& struct& com c[15];&&& printf("请依次输入相关信息:\n");&&& for(i=0;i&N;i++)&{&&&& scanf("%s%d%c%f%d",c[i].name,&(c[i].munber),c[i].sex,&(c[i].score),&(c[i].age));&&&& lastScore[i]=c[i].score[0]+c[i].score[1]+c[i].score[2]+c[i].score[3]+c[i].score[4]+c[i].score[5]+c[i].score[6]+c[i].score[7];&&&&&&& &}&& printf("输出所有成绩和:\n");&&&&&&&&&&&&& &&&&&&& printf("&& %.2f ",lastScore[i]);&& &&printf("\n");& &&&&& for(j=0;j&14;j++)&&&&&&&&&&&&&&&&&& &&&& for(i=0;i&=14-i;i++)&&& if(lastScore[i]&lastScore[i+1])&&& {&& k=lastScore[i];&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /*冒泡法排列商品所有信息*/&& lastScore[i]=lastScore[i+1];&& lastScore[i+1]=k;
&& strncpy(s,c[i].name,21);&& strncpy(c[i].name,c[i+1].name,21);&&&&& strncpy(c[i+1].name,s,21);
&& n=c[i].munber[0];&&&&&&&& c[i].munber[0]=c[i+1].munber[0];&&&&&&&& c[i+1].munber[0]=n;
&& m=c[i].age[0];&&&&&&&& c[i].age[0]=c[i+1].age[0];&&&&&&&& c[i+1].age[0]=m;
&&&&&&&& p=c[i].score[0];&&&&&&&& c[i].score[0]=c[i+1].score[0];&&&&&&&& c[i+1].score[0]=p;&&& }&&& printf("所有商品所有信息:商品名称& 商品编号 商品价格 商品数量&&&& 总价值(按总价由高到低排序):\n");&&&&&& for(i=0;i&15;i++)&&& &&&& {&&&&& printf("%s&&&&& %d&&&&& %d&&&&& %d&&&&&& %d",c[i].name,c[i].munber[0],c[i].score[0],c[i].age[0],lastScore[i]);&&&&&&&&&&& printf("\n");&&&& }
}这个应该没有问题,我调试过没有错,不过按你需要自己在改下就OK啦
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号以下试题来自:
单项选择题下列软件中,()是系统软件A.用C语言编写的求解一元二次方程的程序
B.工资管理程序
C.用汇编语言编写的一个练习程序
D.Windows操作系统
为您推荐的考试题库
您可能感兴趣的试卷
你可能感兴趣的试题
A.存储容量小、工作速度快
B.存储容量大、工作速度快
C.存储容量小,工作速度慢
D.存储容量大,工作速度慢
C.财务管理系统
A.计算机系统&
B.计算机硬件&
C.计算机软件&
D.计算机程序
5A.显示器是输入设备
B.显示器是输出设备
C.显示器是输入设备/输出设备
D.显示器是存储设备}

我要回帖

更多关于 用c语言编写小程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信