PTA 数组中偶数除以2,奇数乘以2

栏目:资讯发布:2023-09-22浏览:4收藏

PTA 数组中偶数除以2,奇数乘以2,第1张

C语言实现以上数组的运算,参考代码如下:

#include<stdioh>

int main()

{

int a[10],t,i;

for(i=0; i<10; ++i) {

scanf("%d",&t);

if(t%2==0)

t=t/2;

else

t=t2;

a[i]=t;

}

for(i=0; i<10; ++i)

printf("%4d",a[i]);

return 0;

}

//超过100个数,你的无法应对,给你个新的

#include<stdioh>

int main()

{

int n,t,min;

scanf("%d",&n);

if(n-->0)

{

scanf("%d",&min);

while(n--)

{

scanf("%d",&t);

if(t<min)

min=t;

}

printf("min = %d",min);

}

return 0;

}

应该是二级C语言。

关于PAT三个等级什么难度大致如下:

B(乙级):中文题,题目挺简单的,主要就考简单模拟、字符串处理、散列Hash、排序、二分、链表。

A(甲级):英文题,在乙级基础上加了数据结构,主要考线性数据结构、树、图论、最短路、深搜广搜、STL、并查集、简单DP、复杂模拟等。

T(顶级):英文题,就是ACM那些东西了。

乙级和甲级只要你把题库刷穿,90%的题能独立做出来,那么考满分八成不是问题。(一定要把题库刷完再去考)

如果你的目的是找工作,还是建议你考甲级吧,起码比乙级认可度高呀。

乙级真的是太容易了,而且要考就考100。另外英语真的不用愁,甲级顶级题目虽然都是英文,但其实很好读懂题,你不信去读读试试。

考完如果成绩好的话确实有企业联系你,但都是一些小单位或是创业公司,给你发邮件让去投简历,我也没投。(投的话应该可以直接面试)

#include <stdioh>

#include <stringh>

#include <malloch>

const int MAXSIZE = 122;

// 完成以字符串形式的两个大数相加。返回字符串形式的和。

// tatol ← addnum1 + addnum2

char LargeNumberAdd(char const addnum1,char const addnum2, char total) {

int i,j,k = 0,len,result,carry = 0;

int len1 = strlen(addnum1);

int len2 = strlen(addnum2);

for(i = len1 - 1,j = len2 - 1; i >= 0 && j >= 0; --i,--j) {

result = addnum1[i] - '0' + addnum2[j] - '0' + carry;

carry = result/10;

total[k++] = result%10 + '0';

}

while(i >= 0) {

result = addnum1[i--] - '0' + carry;

carry = result/10;

total[k++] = result%10 + '0';

}

while(j >= 0) {

result = addnum2[j--] - '0' + carry;

carry = result/10;

total[k++] = result%10 + '0';

}

if(carry) total[k++] = carry + '0';

total[k] = '\0';

len = strlen(total);

for(i = 0; i < len/2; ++i) {

k = total[i];

total[i] = total[len - 1 - i];

total[len - 1 - i] = k;

}

return total;

}

// 完成以字符串形式的两个大数相减。返回字符串形式的差。

// difference ← subnum1 - subnum2

char LargeNumberSub(char subnum1,char subnum2, char difference) {

int i,j,k,result,borrow = 0;

int sign = 0,swap = 0;

int maxl,minl;

char pta,ptb;

int len1 = strlen(subnum1);

int len2 = strlen(subnum2);

if(len1 == len2) {//两数位数相等时

for(i = 0; i < len1; ++i) {//从高位开始比较,某位大时,这个数就大,相等时继续比较,某位小时,这个数就小

if(subnum1[i] == subnum2[i]) continue;

else if(subnum1[i] < subnum2[i]) {

swap = 1;

break;

}

else {

swap = 0;

break;

}

}

}

if(len2 > len1 || swap) {//减数大于被减数

pta = (char )malloc((len2 + 1)sizeof(char)); // pta总是指向绝对值更大的数

ptb = (char )malloc((len1 + 1)sizeof(char)); // 而ptb指向绝对值更小的数

strcpy(pta,subnum2);

strcpy(ptb,subnum1);

maxl = len2;

minl = len1;

sign = 1;

}

else {//被减数大于减数

pta = (char )malloc((len1 + 1)sizeof(char)); // pta总是指向绝对值更大的数

ptb = (char )malloc((len2 + 1)sizeof(char)); // 而ptb指向绝对值更小的数

strcpy(pta,subnum1);

strcpy(ptb,subnum2);

maxl = len1;

minl = len2;

sign = 0;

}

for(i = maxl - 1,j = minl - 1,k = 0; j >= 0; --i,--j) {//从个位开始减

result = pta[i] - ptb[j] - borrow;

if(result < 0) {

result += 10;

borrow = 1;

}

else borrow = 0;

difference[k++] = result + '0';

}

while(i >= 0) {

result = pta[i--] - '0' - borrow;

if(result < 0) {

result += 10;

borrow = 1;

}

else borrow = 0;

difference[k++] = result + '0';

}

--k;

while(difference[k] == '0' && k > 0) --k;//去除差数前端冗余的'0'

if(sign) difference[++k] = '-';

difference[++k] = '\0';

for(i = 0; i < k/2; ++i) {

result = difference[i];

difference[i] = difference[k - 1 - i];

difference[k - 1 - i] = result;

}

free(pta);

free(ptb);

return difference;

}

int main() {

char s[MAXSIZE] = "4561239986547";

char t[MAXSIZE] = "4560658897546";

char result[MAXSIZE + 1];

printf("%s + %s = %s\n",s,t,LargeNumberAdd(s,t,result));

printf("%s - %s = %s\n",s,t,LargeNumberSub(s,t,result));

printf("%s - %s = %s\n",t,s,LargeNumberSub(t,s,result));

return 0;

}

#include <stdioh>

#include <stringh>

#define MAXS 10

void Shift(char s[]);

void GetString(char s[]); / 实现细节在此不表 /

int main()

{

char s[MAXS];

GetString(s);

Shift(s);

printf("%s\n", s);

return 0;

}

//下面是修改过的答案及原因

void GetString(char s[])

{

scanf("%s", s);

return;//void也写上return比较好

}

void Shift(char s[])

{

int i, t, d = 0, e;

char a[100], b[100], c[100];

memset(a, 0, sizeof(a));//abc数组都没有初始化,里面的数据不能保证是正常的

memset(b, 0, sizeof(b));//可能在你的电脑上数据正常,放在评测机上就错了

memset(c, 0, sizeof(c));

e = strlen(s);

for (i = 0; i<e; i++) {

if (i <= 2) {

a[i] = s[i];

}

if (i>2) {

b[d] = s[i];

d++;

}

}

d = 0;

t = strlen(b);

for (i = 0; i<e; i++) {

if (i<t) {

s[i] = b[i];

//c[i] = b[i];

}

if (i >= t) {

s[i] = a[d];

//c[i] = a[d];

d++;

}

}

// puts(c);

return;//void也写上return比较好

}

PTA 数组中偶数除以2,奇数乘以2

C语言实现以上数组的运算,参考代码如下:#include<stdioh>int main(){ int a[10],t,i; for(i=0; i<10; ++i) { ...
点击下载
热门文章
    确认删除?
    回到顶部