c语言题 不要用指针不用c++ 【问题描述】现要对一个由大写字母组成的字符串进行加密,有两种加密方法

供稿:hz-xin.com     日期:2025-01-12
C语言编程问题

#include
//缺少重要
头文件
#include
#include

int
SIZE;struct
student{
char
name[20];
int
xh;
int
yw;


//语文
int
sx;


//数学
int
yy;


//英语}*stud;
void
save();int
srsj();int
cxsj();int
main();int
gzcx();int
gzcx(){
int
i,a,b;
char
name[10]={0};
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("无法打开此文件
");
}
printf("


查看姓名,
学号

");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct
student),1,fp);
printf("%s
%d
%d
%d",stud[i].name,stud[i].xh,stud[i].sx,stud[i].yw,stud[i].yy);
}
printf("
***************************************
");
printf("请输入数字:1:按学号查询












2:按姓名查询
");
printf("***************************************
");
printf("你输入的数字:");
scanf("%d
",&b);
switch(b)
case
1:
{
printf("请输入工号,查看工资清单

");
printf("工号:");
scanf("%d
",&a);
printf("
");
for(i=0;i<SIZE;i++)
{
if(stud[i].xh==a)
{
printf("%s
%d
",stud[i].name,stud[i].xh);
}
}
break;
case
2:
{printf("请输姓中文姓名,查看学生信息查询

");
printf("姓名:");
scanf("%s",name);
for(i=0;i<SIZE;i++)
{
if(strcmp(name,stud[i].name)==0)
{
printf("%s
%d
",stud[i].name,stud[i].xh);
}
}
}
}
printf("
");
printf("

***************************************
");
printf("注意:但无法查询时,请按要求操作!或者是无此数据!
");
printf("***************************************



");
fclose(fp);
main();
return
0;}
void
save(){
FILE
*fp;
int
i;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("cannot
open
file

");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct
student),1,fp)!=1)
fclose(fp);}
int
srsj(){
int
i;
int
SIZE;
printf("输入学生格式:");
scanf("%d",&SIZE);
stud=new
struct
student[SIZE];
for(i=0;i<SIZE;i++)
scanf("%s%d%d%d%d",stud[i].name,&stud[i].xh,&stud[i].sx,&stud[i].yw,&stud[i].yy);
save();
return
0;}
int
cxsj(){
int
i;
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannot
open
file
");
}
for(i=0;i<SIZE;i++)
{fread(&stud[i],sizeof(struct
student),1,fp);
printf("姓名:%s学号:%d
",stud[i].name,stud[i].xh);
}
fclose(fp);
return
0;}int
main() {
int
a;
printf("1:进入
输入数据

2:查询数据
3:查询
");
printf("输入数字:");
scanf("%d",&a);
if(a==1)
srsj();
if(a==2)
cxsj();
if(a==3)
gzcx();
return
0;//缺少返回}

因为是大写字母转化为小写字母;我们可以考虑运用ASCII码来解决这类问题。根据ASCII码,大写字母变为小写字母只需要+32即可.
例如我们定义char ch1='B';我们仅需要输出ch1+32即可;
下面写给出具体程序:

首先定义一个字符变量;然后提醒输入大写字母;在输入大写字母后;由ASCII码转化后;输出的即为小写字母。这是一种很简洁的转化方式。
当然;这种程序也有弊端;当你输入小写字母时;ASCII码就会超出范围;因为最高为127;而a的ASCII码为97;加上32后为129,显然超出范围;程序会无内容输出。
不过,解决大写字母转化小写字母倒是绰绰有余的。
扩展资料ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解。
下有具体ASCII对照表
百度百科-ASCII

如果有必要,修改下头文件名称,请参考:
#include<cstdio>
#include<cstdlib>
#include<cctype>
int main()
{
int n,s,t=0,k;
int tran_seq[30]={0};
::printf("请输入要加密的数组个数:\n");
::scanf("%d",&n);
::getchar();
char arr[30],arr1[30];
for(int i=0;i!=n;++i)
{
::printf("请输入第%d个数组:\n",i+1);
while(::isalpha(s=::getchar()))
{
arr[t++]=s;
}
arr[t]='\0';
::scanf("%d",&k);
for(int j=0;j!=t;++j)
::scanf("%d",&tran_seq[j]);
while(::getchar()!='\n');
for(int j=0;j!=t;++j)
{
int temp=arr[j];
temp+=k;
if(temp>'Z')
temp-=26;
arr[j]=temp;
}
for(int j=0;j!=t;++j)
{
arr1[j]=arr[tran_seq[j]-1];
}
arr1[t]='\0';
::printf("第%d个字符串加密后为:\n%s\n",i+1,&arr1);
t=0;
}
::getchar();
::getchar();
return 0;
}

有神么意思

c语言题 不要用指针不用c++ 【问题描述】现要对一个由大写字母组成的字...
int main(){ int n,s,t=0,k;int tran_seq[30]={0};::printf("请输入要加密的数组个数:\\n");::scanf("%d",&n);::getchar();char arr[30],arr1[30];for(int i=0;i!=n;++i){ ::printf("请输入第%d个数组:\\n",i+1);while(::isalpha(s=::getchar())){ arr[t+...

C++,不使用数组也不使用指针怎么解决这个问题?
最后,我用的是标准 C, 但是c++编译器也能正确编译。include <stdio.h>#include <string.h>#define LINE_SIZE 1000int eval_number(const char *expr, int *consumed){ int value; int index, len; char digit; *consumed = 0; value = 0; len = strlen(expr); fo...

关于C语言指针的问题
指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越 来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的 类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。我看了不 少书,发现有些写得差的书中,就把指针的这两个概念搅在一起了,所以看起书来前后矛盾,...

c++编写一个递归函数,将一个字符串按其逆序输出。要求不要用指针...
char str[] = "backward output";void rec_print( char* str ){ if (0 == str || 0 == str_len(str) ) return;printf("%c",str[strlen(str)-1]);str[strlen(str)-1]=0;rec_print(str);} void rec_print_no_pointer( std:;string& str ){ if (!str.size()) return;std...

c语言中的几个关于* &的指针问题还有构造函数问题(不要扯c++上去了)
函数中改变的内容将与函数堆栈内容无关,修改的是指针指向对应内存的位置,故可以作多个修改(传多个指针,修改多个指针指向的内存空间)。最后一个问题,return的意思是函数返回,只要调用这一语句,函数即刻返回,该语句下的所有语句将不会被执行。最后祝楼主的C语言之路越走越棒!!

C++问题(指针&引用)?
所以嵌入式开发基本上都是用C语言而不是C++。你会发现Java、Python、PHP等语言都已经抛弃了指针的概念,都只有引用。所以C++里没必要再用指针了,会引用就行。至于你的第二个问题,那是引用的基本定义,如果直接int r=i,和最基础的变量定义一样,怎么可能是引用。

C++是不是最好不用数组,宏,指针
不用指针的C++,那是JAVA了,数组倒是可以使用vector代替,至于宏,你愿意自定义就自定义,不需要可以不用。我觉得你这种问题应该自己多写程序去体会,不同项目和编程风格对这些的使用要求是不同的。

向高手请教C++语言中的名词问题。
1.不可以去掉。那个是取地址符号,因为n,m都是简单的变量。但是当你用指针的时候,就不需要&(取地址符)比如:定义一个指针:int *p;scanf("%d",p);这时候就不需要了,因为p代表的就是内存的地址,而*p代表的是内存的地址中存储的内容。2.那个是输入\/输出流的问题,都是流stream,输入流:i...

为什么需要指针?
其实说C#和java里面不用指针,但处处是“指针”,里面不存在c++中的值传递,而是传递引用,而引用本质上就是指针。为什么需要指针呢?由于c\/c++开发先与java和c#,c\/c++为了给程序员以控制内存的目的而提出了指针。一个简单的例子就是垃圾回收机制。在c\/c++中,你可以使用delete(free)来释放内存,在c#...

c语言用SWAP交换两个串的值,不用指针
如果你想函数实现,不用指针做不了吧。C++、Java还可以用引用,但是引用的实质仍是指针。不用函数的话用一句也可以解决:异或运算:a ^= b ^= a ^= b;赋值表达式返回左值:a = a+b-(b=a);