1.建立一个顺序表,随机产生10个100以内的整数,并按要求完成:(1)在屏幕上显示顺序表中的10个整数;(2)把值为b的元素插入到值为a的元素后面,若不存在a,则把b插入到表尾,显示更新后的顺序表;(3)删除值为a的元素,若不存在a,重新输入要删除的元素,找到后删除,并显示更新后的顺序表;2.已知A、B分别是m、n位(位数为10-30的随机正整数)的随机正整数,编写程序给出这两个正整数相加的结果。如:A=47858628539074,B= 212821064467,C=A+B=48071449603541
时间: 2023-05-16 15:07:05 浏览: 97
编写函数,建立一个顺序表并输出,计算该顺序表的长度。 实现在顺序表中查找第i个元素的值。实现在顺序表中第i个位置上插入值为x的
5星 · 资源好评率100%
1.以下是建立顺序表的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int length;
} SqList;
void initList(SqList *L) {
L->length = 0;
}
void displayList(SqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void insertList(SqList *L, int a, int b) {
int i, j;
for (i = 0; i < L->length; i++) {
if (L->data[i] == a) {
for (j = L->length; j > i + 1; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i + 1] = b;
L->length++;
return;
}
}
L->data[L->length] = b;
L->length++;
}
void deleteList(SqList *L, int a) {
int i, j;
for (i = 0; i < L->length; i++) {
if (L->data[i] == a) {
for (j = i; j < L->length - 1; j++) {
L->data[j] = L->data[j + 1];
}
L->length--;
return;
}
}
printf("Element not found!\n");
}
int main() {
SqList L;
initList(&L);
srand(time(NULL));
int i;
for (i = 0; i < MAX_SIZE; i++) {
L.data[i] = rand() % 100;
L.length++;
}
printf("Original list:\n");
displayList(L);
int a, b;
printf("Enter a and b to insert b after a: ");
scanf("%d %d", &a, &b);
insertList(&L, a, b);
printf("Updated list after insertion:\n");
displayList(L);
printf("Enter a to delete: ");
scanf("%d", &a);
deleteList(&L, a);
printf("Updated list after deletion:\n");
displayList(L);
return 0;
}
2.以下是两个正整数相加的代码:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 30
void reverse(char *str) {
int len = strlen(str);
int i;
for (i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
void add(char *a, char *b, char *c) {
int lena = strlen(a);
int lenb = strlen(b);
int len = lena > lenb ? lena : lenb;
int carry = 0;
int i;
for (i = 0; i < len; i++) {
int numa = i < lena ? a[lena - i - 1] - '0' : 0;
int numb = i < lenb ? b[lenb - i - 1] - '0' : 0;
int numc = numa + numb + carry;
c[i] = numc % 10 + '0';
carry = numc / 10;
}
if (carry) {
c[len] = carry + '0';
len++;
}
c[len] = '\0';
reverse(c);
}
int main() {
char a[MAX_SIZE + 1], b[MAX_SIZE + 1], c[MAX_SIZE + 2];
printf("Enter A and B: ");
scanf("%s %s", a, b);
add(a, b, c);
printf("C = A + B = %s\n", c);
return 0;
}
阅读全文